Hallo,
ich versuche ein blödes einfaches SDL-Programm für Windows mit MingW32 unter Debian cross zu kompilieren, aber der Linker bringt mir folgende Fehler:
Code:
zwerg@bilbo:~/dev/test/win$ i586-mingw32msvc-g++ -I/home/zwerg/dev/SDL-1.2.9/include -L/home/zwerg/dev/SDL-1.2.9/lib -lSDLmain -lSDL win.cpp -o win.exe
/tmp/ccq47szh.o:win.cpp:(.text+0x110): undefined reference to `_SDL_Init'
/tmp/ccq47szh.o:win.cpp:(.text+0x122): undefined reference to `_SDL_GetError'
/tmp/ccq47szh.o:win.cpp:(.text+0x156): undefined reference to `_SDL_Quit'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/../../../../i586-mingw32msvc/lib/libmingw32.a(main.o):: undefined reference to `_WinMain@16'
collect2: ld returned 1 exit status
zwerg@bilbo:~/dev/test/win$
Das Programm sieht wiefolgt aus und kompiliert mit dem normalen g++ und den normalen Debian-Libs wunderbar:
Code:
#include <iostream>
#include <SDL.h>
int main()
{
if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
std::cout << "SDL fucked up! " << SDL_GetError();
exit(1);
}
atexit(SDL_Quit);
}
Das Verzeichnis /home/zwerg/dev/SDL-1.2.9/lib:
Code:
zwerg@bilbo:~/dev/test/win$ ls /home/zwerg/dev/SDL-1.2.9/lib/
SDL.dll SDL_net.dll SDL_net.lib libSDL.dll.a libSDL.la libSDLfoo.a libSDLmain.a
zwerg@bilbo:~/dev/test/win$
Das Verzeichnis /home/zwerg/dev/SDL-1.2.9/include:
Code:
zwerg@bilbo:~/dev/test/win$ ls /home/zwerg/dev/SDL-1.2.9/include/
SDL.h SDL_copying.h SDL_getenv.h SDL_main.h SDL_opengl.h SDL_timer.h close_code.h
SDL_active.h SDL_cpuinfo.h SDL_joystick.h SDL_mouse.h SDL_quit.h SDL_types.h
SDL_audio.h SDL_endian.h SDL_keyboard.h SDL_mutex.h SDL_rwops.h SDL_version.h
SDL_byteorder.h SDL_error.h SDL_keysym.h SDL_name.h SDL_syswm.h SDL_video.h
SDL_cdrom.h SDL_events.h SDL_loadso.h SDL_net.h SDL_thread.h begin_code.h
zwerg@bilbo:~/dev/test/win$
Weiß jemand vielleicht, warum der Linker die Funktionen in der DLL nicht findet?
Danke, zwerg
Lesezeichen