Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z SDL MinGW Code::Blocks


Rekomendowane odpowiedzi

Opublikowano

Witajcie mam oto taki problemik, że nie mogę z linkować sobie programiku z SDL.

 

Konfiguracja code::blocks:

 

Linker settings -> Link libraries:

..\..\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib\libSDL2.a

..\..\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib\libSDL2.dll.a

..\..\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib\libSDL2_test.a

..\..\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib\libSDL2main.a

 

Linker settings -> Other linker options:

-lmingw32 -lSDL2main -lSDL2 -mwindows

 

Search directories -> compiler:

..\..\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\include\SDL2

 

Search directories -> linker:

..\..\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib

 

KODY:

#include "SDL.h"

int main(int argc, char *argv[]){
SDL_Init(SDL_INIT_VIDEO);
SDL_Window *window = SDL_CreateWindow("OKNO",10,10,400,400,SDL_WINDOW_SHOWN);
SDL_Quit();
return 0;
}
 

Błędy:

mingw32-g++.exe -LC:\{DATA}\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib -LC:\{DATA}\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib -LE:\SDL2-2.0.3 -o bin\Release\SDL_TEST.exe obj\Release\main.o -s -lmingw32 -lSDL2main -lSDL2 -mwindows ..\..\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib\libSDL2.a ..\..\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib\libSDL2.dll.a ..\..\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib\libSDL2_test.a ..\..\PROGRAMMING\SDL2-2.0.3\x86_64-w64-mingw32\lib\libSDL2main.a
obj\Release\main.o:main.cpp:(.text+0x1b): undefined reference to `SDL_Init'
obj\Release\main.o:main.cpp:(.text+0x4f): undefined reference to `SDL_CreateWindow'
obj\Release\main.o:main.cpp:(.text+0x60): undefined reference to `SDL_Quit'

 

Rozpakowałem i podałem względne ścieżki do bibliotek i include-ów;

CODE::BLOCK wykrywa includesy bo otrzymuje automatyczne podpowiedzi podczas pisania.

Kompilacja przebiega bez błądów.

Tylko połączyć mi się to nie chce ;/

Męczę się już tak z tydzień.

 

Korzystałem już z np irrKlanga i nie miałem takich problemów

na wiki SDL-a znalazłem coś takiego:

 

 

I get undefined references to various SDL functions...

When you're compiling with gcc, you need to make sure the output of sdl-config follows your source file on the command line: gcc -o test test.c sdl-config --cflags --libs

If you're getting undefined references to functions in SDL_image or SDL_mixer, make sure you're actually linking with those libraries as well.

 

Ale nie za bardzo wiem jak to rozgryźć :/

PS: nie korzystam z mixer ani image więc ostatnia linia nie ważna.

 

Liczę na pomoc :)

 

 

Powrót do c++ po 3 latach to jak nauka wszystkiego od początku.

Linux pozwoli wycisnąć ostatnią łzę z twojego procesora.

Opublikowano
||=== Build: Release in SDL_TEST (compiler: GNU GCC Compiler) ===|

 sdl-config||No such file or directory|

||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

 

Gdy dodałem '--' przed sdl-config:

 


mingw32-g++.exe: error: unrecognized command line option '--sdl-config'

mingw32-g++.exe: error: unrecognized command line option '--cflags'

mingw32-g++.exe: error: unrecognized command line option '--libs'

Linux pozwoli wycisnąć ostatnią łzę z twojego procesora.

Opublikowano
­jak dasz -- to na pewno nie zadziała, bo to plik a nie parametr. Upewnij się na 200% że masz prawidłowo skonfigurowaną bibliotekę i projekt, jak nic innego nie zadziała to skopiuj sdl-config do folderu z binarkami kompilatora.
846331404756772371599.jpeg
Opublikowano

Utworzyłem nowy project w DevC++ i działa znakomicie.

 

Po przeczyszczeniu całego folderu z SDL i Code::Blocks, I ponownej instalacji otrzymuje undefined reference to `WinMain@16'.

Rozwiązaniem tego problemu powinna być flaga -lmingw32 która zadziałała pod DevC++ ale pod Code::Blocks nie robi różnicy :/

 

 

Czy jest to możliwe że w Code::Blocks mam źle skonfigurowane ścieżki do MinGW?

 

@Edit

Znalazłem rozwiązanie:

Korzystałem z wersji SDL "x86_64-w64-mingw32"    i tu miałem błędy.

Kiedy przetestowałem "i686-w64-mingw32"   Okazało się że działa o.O

 

Czy może mi ktoś wytłumaczyć to zjawisko :)

Linux pozwoli wycisnąć ostatnią łzę z twojego procesora.

  • 2 tygodnie później...
Opublikowano

Można chyba zamknąć i uznać że rozwiązano problem SDL2 -> korzystałem z złych wersji bibliotek. Ale na dal nie wiem czemu akurat "i686-w64-mingw32" skoro mam 32 myślałem że x86 to 32 o.O

Linux pozwoli wycisnąć ostatnią łzę z twojego procesora.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...