如何链接AdaSDL2库

如何链接AdaSDL2库,ada,sdl-2,Ada,Sdl 2,我正试图用AdaSDL2组织一个项目,但我不知道我在做什么(我不怕承认这一点)。在某地和其他地方有很多回答了的问题,它们解决了类似的问题,但没有解决我的问题 基本上,我不能把这东西链接起来。这是我第一次尝试链接到绑定。我用的是GPS 2014。我在网上看到过很多不同的解决方案,但我在尝试这些解决方案时犯了很多错误 这是我的.gpr: project Test is for Source_Dirs use ("./**", "..\AdaSDL2-master"); for 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;
我知道这是一个愚蠢的问题,但我没有运气通过谷歌搜索找到答案。我确信这与我的项目设置(gpr)或我试图运行gnatmake的方式有关,但我一事无成。我不知道是否需要以某种方式链接到sdl2.dll本身,但我尝试了许多不同的方法,它给我的最常见错误是它无法识别文件格式


有人能帮我解释一下吗?谢谢。

我没有使用该绑定,但是这些错误让我想起了我在创建OpenGL绑定,并再次尝试在postgres sql绑定中进行链接的时候——您在相应的目录中有链接到的库吗?(sdl2.dll或它可能正在查找静态库…)

此外,请确保您将此信息告知链接器“-lsdl2”(我想,我不记得您是否需要后缀……最好重新阅读链接器的文档。)



总的来说,我认为在irc.freenode上询问Ada是你最好的选择。我知道至少有一个人在积极开发SDL-2绑定。

好的,问题是我在需要x86 dll时试图使用x64 dll。我只需要返回SDL下载页面并用正确的dll替换它。新手犯的错误。我希望这对其他人有所帮助。

在尝试了这两种方法之后,我认为这可能是dll如何编译的问题,因为它表示无法识别该格式。我可以尝试从源代码重新编译它。
*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