ich sehe schon, daß es sinnvoll ist, die Menge impliziter includes zu minimieren, aber hätte dafür nicht auch ein switch der Art "-fmin-include" gereicht - für Fälle, in denen Compilezeit kritische Resource ist?
http://magazin.c-plusplus.net/artikel/Compilerbau
Ich würde die parse_* Funktionen abwandeln welche den Rumpf der Funktionen einlesen, so dass sie einen AST zurück geben. Du erhälst so einen AST per Funktion welcher alle Informationen enthält, welche nötig sind um den ASM Code zu erzeugen.
Mit gcc geht es so:
// MinGW-Variante für gemeinsam benutzte Datenbereiche:
#define SHARED __attribute__((section(".shr"), shared))
int global1 SHARED = 0; und dann so ...
int SHARED global2 = 0; ... oder auch so rum ...
kann man in der gcc.info nachlesen.
AufbauSued schrieb:
Hallo,
[Linker error] undefined reference to `__cpu_features_init'
ld returned 1 exit status
C:\Dokumente und Einstellungen\icke\Eigene Dateien\Makefile.win [Build Error] [Project1.exe] Error 1
Wie die Meldung schon sagt, ist das ein Linker-Fehler. Du versuchst also, eine Funktion aufzurufen, die in keiner der zusammengelinkten Objektdateien/Bibliotheken vom Linker gefunden werden kann. Versuch mal, herauszufinden, in welcher Bibliothek/Quelldatei die Funktion definiert ist. Diese Bibliothek/Quelldatei muß spätestens beim Linken dem Projekt hinzugefügt sein.
Jochen Kalmbach schrieb:
Ist das nicht ein "Compiler Intrinsic"?
Nein, es ist in der "windows.h" deklariert.
Ich habe das Problem behoben. Meine windows.h war defekt, eine neue Kopie hat Wunder gewirkt.......
Ich habe das zwar nun nicht gemacht, was du gesagt hast, Maxi, aber ich habe das Problem so behoben:
Ich habe einfach das Programm neu geschrieben, also den alten Ordner in "C:\usw." gelöscht und das Programm neu geschrieben, nun öffnet er es auch ohne Probleme!
Trotzdem herzlichen Dank!
mfg
GerTiger
PS: thread kann geschlossen werden...
g++ linkt die libs also automatisch
Du nimmst gcc und linkst manuell die libstdc++ dazu (umständlich und unsinnig).
Deswegen ist das auch unsinnig.
Nur "g++" ist für mich nicht ausreichend. Also habe ich -static mitgenommen. Fehlermeldung:
FATAL: kernel too old
Segmentation fault
Fehlermeldung ist eventuell (wie oben beschrieben) nachvollziehbar. Also fällt g++ auch weg.
g++-3.3 hat aber funktioniert, da ich die benötigten Dateien auf den anderen Rechner habe.
So wie ich das jetzt aber verstanden habe, hätte es dann mit -static und g++-3.3 funktionieren müssen. Hat es aber nicht. Also habe ich -static nicht ganz verstanden. Oder kann sich das jemand erklären?
-static bindet doch nur die Libs an der Binärdatei und hätte somit genauso funktionieren müssen.
pyromania schrieb:
Was verstehst du denn unter einer "GNU-IDE"?
Eine IDE, die die GCC benutzt oder eine IDE die unter der GPL lizensiert ist oder was?
Falls es ersteres ist, kann ich dir auch noch Eclipse/CDT und Netbeans empfehlen.
Egal, hauptsache frei erhältlich.
abc.w schrieb:
Hallo,
Du musst die entsprechende Library angeben, ich glaube "-lws2_32", und ich würde zusätzlich zu -Wall noch folgende Parameter empfehlen -Wextra und -pedantic (d.h. noch mehr Warnungen vom Compiler ):
gcc -Wall -Wextra -pedantic -o test.exe test.c -lws2_32
Hoffe, es funktioniert unter Vista, habe nämlich nur XP...
Hmm, das mit dem "-lws2_32" hatte ich auch ausprobiert - jedoch half das nicht.
Da muss ich mich wohl verschrieben haben
Danke euch zwei
Entferne unter Project Build Options -> Compiler Settings -> Compiler Flags den Haken bei "Enable all compiler warnings [-Wall]" oder öffne deine .cbp-Datei mit einem Texteditor und entferne die Zeile <Add option="-Wall" />
Frohe Weihnachten
Lies doch einfach mal die Doku!
Ist das so schwer?
http://msdn.microsoft.com/en-us/library/ms712879.aspx
pszSound
A string that specifies the sound to play. The maximum length, including the null terminator, is 256 characters. If this parameter is NULL, any currently playing waveform sound is stopped. To stop a non-waveform sound, specify SND_PURGE in the fdwSound parameter.