2015-02-28 2 views
0

Я пытаюсь собрать проект с помощью AdaSDL2, но я не знаю, что делаю (не боюсь признаться в этом). Есть много ответов на вопросы о SO и других местах, которые решают подобные проблемы, но не исправляют мои проблемы.Как связать библиотеку AdaSDL2

В принципе, я не могу получить ссылку на ссылку. Это первый раз, когда я пытался связать привязку. Я использую GPS 2014. У меня появилось множество ошибок, связанных с различными решениями, которые я видел в Интернете.

Вот мой .gpr:

project Test is 

    for Source_Dirs use ("./**", "..\AdaSDL2-master"); 
    for Source_Files use ("engine.adb", "engine.ads", "lists.adb", "lists.ads", "sdl-image.adb", "sdl-image.ads", "sdl-mixer.adb", "sdl-mixer.ads", "sdl-ttf.adb", "sdl-ttf.ads", "sdl.adb", "sdl.ads", "window.adb"); 
    for Main use ("window.adb"); 

end Test; 

Вот мой исходный файл window.adb:

with sdl; use sdl; 
with Ada.Text_IO; 
with Interfaces.C; use Interfaces.C; 

procedure Window is 
begin 
    if (SDL_Init((SDL_INIT_VIDEO)) < 0) then 
     Ada.Text_IO.Put_Line("Could not initialize video!"); 
    end if; 
end Window; 

Есть и другие исходные файлы, но они даже не использовали прямо сейчас, потому что я m просто пытается получить тривиальный выше файл для правильной связи.

Когда он пытается связать это дает мне несколько неопределенной ссылку ошибки:

*mypath*\sdl.o:sdl.adb:(.text+0x21b3): undefined reference to `SDL_RWFromFile' 
*mypath*\sdl.o:sdl.adb:(.text+0x21c3): undefined reference to `SDL_LoadBMP_RW' 
*mypath*\sdl.o:sdl.adb:(.text+0x225d): undefined reference to `SDL_RWFromFile' 
*mypath*\sdl.o:sdl.adb:(.text+0x2274): undefined reference to `SDL_SaveBMP_RW' 
*mypath*\sdl.o:sdl.adb:(.text+0x24cf): undefined reference to `SDL_EventState' 
*mypath*\sdl.o:sdl.adb:(.text+0x264b): undefined reference to `SDL_RWFromFile' 
*mypath*\sdl.o:sdl.adb:(.text+0x2670): undefined reference to `SDL_LoadWAV_RW' 
c:/gnat/2014/bin/../libexec/gcc/i686-pc-mingw32/4.7.4/ld.exe: *mypath*\sdl.o: bad reloc address 0x1140 in section `.rdata' 
c:/gnat/2014/bin/../libexec/gcc/i686-pc-mingw32/4.7.4/ld.exe: final link failed: Invalid operation 

Я знаю, что это глупый вопрос, но я не имею никакой удачи найти ответ через Google или SO поиск. Я уверен, что это связано с моими настройками проекта (gpr) или тем, как я пытаюсь запустить gnatmake, но я никуда не ухожу. Я не знаю, нужно ли мне каким-либо образом ссылаться на сам файл sdl2.dll, но я попытался сделать это по-разному, и самая распространенная ошибка, которую он мне дает, заключается в том, что он не распознает формат файла.

Может ли кто-нибудь помочь пролить свет на это? Благодарю.

ответ

0

Я не использовал эту привязку, но эти ошибки напоминают мне, когда я делал привязку OpenGL, и снова пытаюсь связать ссылку postgres-sql - у вас есть lib, с которым вы связываетесь в соответствующем каталоге? (Sdl2.dll или он может искать статическую библиотеку ...)

Кроме того, убедитесь, что вы указали компоновщику об этом «-lsdl2» (я думаю, я не помню, если вам нужно суффиксы или нет ... наверное, лучше перечитайте документацию компоновщика.)


Я думаю, что спрашивать #Ada на irc.freenode будет вашим лучшим выбором, в целом. Я знаю, что есть хотя бы один человек, активно развивающий привязку SDL-2.

+0

После попытки обоих из них, я думаю, это может быть вопрос о том, как скомпилирована dll, поскольку она говорит, что формат не распознается. Я могу попытаться перекомпилировать его из источника. – Devsman

0

Хорошо, проблема в том, что я пытался использовать dll x64, когда мне понадобилась dll x86. Мне просто нужно было вернуться на страницу загрузки SDL и заменить ее правильной dll. Ошибка новичков. Надеюсь, это поможет кому-то еще.

Смежные вопросы