MinGW i bibioteka SDL pod windows

0

WItam wszystkich!

To mój pierwszy post dlatego proszę o wyrozymiałość.

Mianowicie mam problem z kompilacją programów korztających z bibioteki SDL.

Ale po kolei:
Mam zainstalowany MinGW wraz MSYS. Kopilowałem program "Hello World" i poszło bez problemy dlatego wnioskuję że kompilator działa. Zachciało mi się jednak pobawić w pisanie programów multiplatformowych i dlatego postanowiłem skorzystać z dobrodziejstw bibioteki SDL.

Ściągnołem źródła tejże biblioteki dla mingw i zgodnie z instrukcją uruchomiłem MSYS-a. Następnie rozpakowałem źródła do katalogu /tmp i tam ./configure, make ,make install. Instalacja biblioteki przeszła bezproblemowo. Potem chciałem przetestować czy biblioteka działa więc wszedłem do katalogu /test w źródłach biblioteki SDL i tam ./configure. A tam niestety wyskoczyło mi coś takiego:

/tmp/SDL-1.2.7/test
$ ./configure
checking build system type... i686-pc-mingw32
checking host system type... i686-pc-mingw32
checking target system type... i686-pc-mingw32
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.exe
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... none
checking for an ANSI C-conforming const... yes
checking for sdl-config... /usr/local/bin/sdl-config
checking for SDL - version >= 1.2.7... no

  • Could not run SDL test program, checking why...
  • The test program compiled, but did not run. This usually means
  • that the run-time linker is not finding SDL or finding the wrong
  • version of SDL. If it is not finding SDL, you'll need to set your
  • LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point
  • to the installed location Also, make sure you have run ldconfig if that
  • is required on your system

  • If you have an old version installed, it is best to remove it, although
  • you may also be able to get things to work by modifying LD_LIBRARY_PATH
    configure: error: *** SDL version 1.2.7 not found!

Niestety nie wiem jak ustawić tą zmienną LD_LIBRARY_PATH.

Postanowiłem użyć środowiska eclipse.
Tam chciałem skompiloać program tworzący okno SDL z obsługą openGL.
Przekopiowałem pliki *.h do katalogu include a pliki z bibliotekami do katalogu lib. Plik SDL.dll przekopiowałem do katalodu z programem (również do katalogu Windows\system32).
Niestety próba kompilacji skutkuje komunikatem:

make -k clean all
rm -f example.exe *.o core
g++ -c InitGL.cpp -lSDL
g++.exe: -lSDL: linker input file unused because linking not done
g++ -c Main.cpp -lSDL
g++.exe: -lSDL: linker input file unused because linking not done
g++ -o example.exe InitGL.o Main.o -lSDL -lSDLmain -lopengl32 -lglu32 -lm
E:/Programowanie/MinGW/bin/../lib/gcc-lib/mingw32/3.2.3/../../../libmingw32.a(main.o)(.text+0x97):main.c: undefined reference to WinMain@16' make: *** [example.exe] Error 1 make: Target all' not remade because of errors.

Pod linuxem nie mam najmniejszego problemu ze skompilowaniem tego przykładu.

Prosze o pomoc bez tego nie będę mógł pójść dalej z nauką.

Z góry dziękuję za pomoc.

0

Pod Winzgroza najłatwiej zainstalowac sobie Dev'a i użyć jego packet managera do zainstalowania modułów SDL'a - masz pewne ze bedzie dzialac, tylko sobie trza dodac odpowiednia parametr do projektu np: "-lSDL_image" i ewentualnie ustawic odpowiednia sciezke, zeby nie było trzeba miec w includach tego "SDL/costam.h"

Pozdro,
M.

0

Tylko że chciałbym mieć te same środowiska programistyczne zarówno pod Windowsem jak i Linuxem tzn.:

  • kompilator gcc
  • edytor eclipse
  • debuger gdb
    itd.
0

Dev jest tylko edytorem. Uzywa on zarówno gcc jak i gdb. Nie powinno ci to robic zadnej roznicy, ze pod innym OS'em masz inny edytor ;).

0

Zrobiłem według opisu. Czyli zainstalowałem DevC++ a potem dodałem pakiet SDL. Wszystko poszło bez problemów.

Jednak próba kompilacji kończy się komunikatem:

[Linker error] undefined reference to SDL_GetError' [Linker error] undefined reference to SDL_GetError'
.
.
.
ld returned 1 exit status
D:\aaa\source1\Makefile.win [Build Error] [source1.exe] Error 1

Dlatego jestem skłonny uwierzyć że może moje biblioteki SDL-a są do bani. Choć wydaje mi się to niemożliwe bo ściągnołem je ze strony projektu SDL i były one dedykowane dla MinGW.

0

Tia? A dodales -lSDL i inne uzywane biblioteki do parametrów kompilatora?

0

Problem rozwiązałem.

Kombinowałem na wszystkie możliwe sposoby ale w końcu poszło (ale tylko pod DevC++). Z tego wszystkiego nie pamiętam w czym był problem ale obstawiam na kolejność wczytywania bibliotek tzn. -lmingw32 -lSDLmain -lSDL -mwindows (reszta bez znaczenia).

Dzięki za pomoc!

Temat można zamknąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1