Проблем с SDL DevC++ Linker

Започнах уроците за lazyfoo SDL (http://lazyfoo.net/SDL_tutorials/lesson01/windows/devcpp/index.php) и следвах инструкциите за инсталиране точно както са написани, но когато компилирам това --›

#include "SDL/SDL.h"

int main( int argc, char* args[] )
{
   //Start SDL
   SDL_Init( SDL_INIT_EVERYTHING );

   //Quit SDL
   SDL_Quit();

   return 0;    
}

Това се случва -->

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe пропускане на несъвместим C:/SDL-1.2.15/lib/libSDLmain.a при търсене на -lSDLmain

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe пропускане на несъвместим C:/SDL-1.2.15/lib\libSDLmain.a при търсене на -lSDLmain

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe пропускане на несъвместим C:/SDL-1.2.15/lib/libSDLmain.a при търсене на -lSDLmain

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe не може да намери -lSDLmain

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe пропускане на несъвместим C:/SDL-1.2.15/lib/libSDL.dll.a при търсене на -lSDL

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe пропускане на несъвместим C:/SDL-1.2.15/lib/libSDL.dll.a при търсене на -lSDL

c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe не може да намери -lSDL

C:\SDL Tutorial Projects\collect2.exe [Грешка] ld върна 1 състояние на изход

Имам DevC++ 5.4.1 и се опитвам да инсталирам SDL-devel-1.2.15-mingw32.tar.gz

Това има ли нещо общо с моя проблем?

Опитах всичко и просто пише, че пропускането е несъвместимо за libSDLmain.a и libSDL.dll.a.


person Alex Moumoulidis    schedule 12.04.2013    source източник
comment
Може да смесвате 32 и 64 битова версия на libs или може да е това: stackoverflow.com/questions/7925926/   -  person Zdeslav Vojkovic    schedule 12.04.2013
comment
Имам 64-битов Windows и на уебсайта им няма 64-битова версия на SDL Development Library, но в инструкциите се казва, че е добре, ако поставите SDL.dll в C:\Windows\SysWOW64.   -  person Alex Moumoulidis    schedule 12.04.2013
comment
Не съм експерт по SDL, но вярвам, че sdl.dll трябва да отиде в SysWOW64 само ако е 32-битова версия на dll и изграждате 32-битова версия на изпълним файл   -  person Zdeslav Vojkovic    schedule 12.04.2013


Отговори (3)


c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe пропускане на несъвместим C:/SDL-1.2.15/lib/libSDLmain.a при търсене на -lSDLmain

Може да имате несъвместими двоични файлове. Защо използвате x64 компилатор? Опитайте да инсталирате MinGW и да компилирате с необработен gcc.

Ако опитате това, добавете MinGW/bin към пътя си и стартирайте gcc 'filelocation' -lmingw32 -lSDLmain -lSDL

Или опитайте да използвате x86 версия на Dev. Също така IIRC -lSDLmain трябва да идва преди -lSDL и в Windows трябва да добавите -lmingw32, за да се свърже и да работи правилно.

Ако всичко това се провали, един сигурен начин би бил да вземете същия MinGW и да използвате msys за компилиране на SDL себе си.. просто сменете в директорията и стартирайте

./configure
mingw32-make
person iKlsR    schedule 12.04.2013

Трябва да инсталирате Dev-C++ с MinGW за 32 бита и да използвате тази опция за работа със SDL

person Freeman    schedule 08.08.2014

Мисля, че това се случва, защото се опитвате да компилирате 64-битово приложение, използвайки 32-битови двоични файлове. Всичко, което трябва да направите, е да зададете флаг за компилиране на вашето приложение като 32-битово приложение, например gcc (или g++) main.cpp -o -m32 или, ако използвате CMAKE add

set(CMAKE_C_FLAGS -m32)
set(CMAKE_CXX_FLAGS -m32)

в началото.

person Anton Grant    schedule 28.06.2021