Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Stueber
Anmeldungsdatum: 07.07.2008 Beiträge: 202
|
Verfasst am: 21.03.2010, 00:56 Titel: Compileraufruf - Problem |
|
|
Hi!
Ich habe ein kleines Problem beim Compileraufruf und habe keine Ahnung was falsch sein könnte.
Folgende einfache Datei:
Code: | #include once "gtk/gtk.bi"
gtk_init (0, 0)
dim as GtkWidget ptr win = gtk_window_new (GTK_WINDOW_TOPLEVEL)
gtk_widget_show (win)
gtk_main() |
Wenn ich die Datei einfach nur kompiliere klappt alles, aber jetzt hab ich mehrere Dateien in meinem Testprojekt. Damit ich nicht jedesmal jede Datei kompilieren muss kompiliere ich sie erst zu .o Dateien und linke diese dann. Wenn eine Datei geändert wird wird diese wieder kompiliert und mit den anderen .o Dateien gelinkt. Der Sinn davon ist Zeit zu sparen.
Zum kompilieren rufe ich den Compiler so auf:
Code: | "C:\Program Files (x86)\FreeBASIC\fbc.exe" "C:/Users/Thomas/Documents/testordner/main.bas" -o "C:/Users/Thomas/Documents/testordner/main.o" -C |
Zum Linken so:
Code: | "C:\Program Files (x86)\FreeBASIC\fbc2.exe" C:/Users/Thomas/Documents/testordner/main.o |
Jetzt bekomme ich Linkfehler für alle GTK Symbole. Wie macht man das was ich möchte richtig? |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 21.03.2010, 04:05 Titel: |
|
|
Du musst vermutlich dem linker mitteilen, dass er gtk dazulinken soll. _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
 |
Stueber
Anmeldungsdatum: 07.07.2008 Beiträge: 202
|
Verfasst am: 21.03.2010, 11:31 Titel: |
|
|
Das dachte ich auch, aber warum klappt dann:
Code: | "C:\Program Files (x86)\FreeBASIC\fbc.exe" "C:/Users/Thomas/Documents/testordner/main.bas" |
So teile ich dem Linker auch nichts mit und es funktioniert. |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 22.03.2010, 00:17 Titel: |
|
|
Stimmt, du teilst dem linker nichts mit, aber fbc macht es in diesem Fall. Kannst ja mal "/bin/win32/ld.exe" durch ein Programm ersetzen, das ausgiebt, welche Parameter übergeben wurden, dann siehst du es.
/edit: hab das mal bei mir gemacht mit einem gtk-Testprogramm, da kam folgendes raus:
Zitat: | -T C:\Programmieren\FreeBASIC 0.21\lib\win32\i386pe.x -subsystem console -s --stack 1048576,1048576 -L C:\Programmieren\FreeBASIC 0.21\lib\win32 -L ./ C:\Programmieren\FreeBASIC 0.21\lib\win32\crt2.o C:\Programmieren\FreeBASIC 0.21\lib\win32\crtbegin.o buttonbox.o -o buttonbox.exe -( -lgtk-win32-2.0 -lgdk-win32-2.0 -lglib-2.0 -lpango-1.0 -lpangowin32-1.0 -lgobject-2.0 -lgdk_pixbuf-2.0 -lgmodule-2.0 -latk-1.0 -lfb -lgcc -lmsvcrt -lkernel32 -lmingw32 -lmingwex -lmoldname -lsupc++ C:\Programmieren\FreeBASIC 0.21\lib\win32\fbrt0.o -) C:\Programmieren\FreeBASIC 0.21\lib\win32\crtend.o |
Also eine ganze Menge libs, die der Linker dazulinken muss, sonst bekommst du eben den Fehler mit den undefinierten Referenzen. Du hast dann ja die declares im Header, aber eben keinen Code dazu.
Da du das ganze oben in kompilieren und linken auftrennst, müsstest du die ganzen libs nochmal angeben. Der Linker weis ja nicht, welche du brauchst. Wenn du fbc beides auf einmal machen lässt, kann er dem Linker dank "#inclib" mitteilen, welche libs dazugelinkt werden müssen. _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 22.03.2010, 10:51 Titel: |
|
|
-v hätte es auch getan  |
|
Nach oben |
|
 |
|