将GLFW函数导入Ada

时间:2014-11-11 11:43:23

标签: ada glfw gnat-gps

如何将GLFW功能导入Ada?

使用GNAT GPS作为编译器并具有以下文件夹结构:

  • test.adb
  • test.gpr
  • OBJ
  • libglfw3.a
  • LIB
    • libglfw3.a

test.gpr

project test is
    for Source_Dirs use ("");
    for Main use ("test.adb");
    for Object_Dir use "obj";
    for Library_Dir use "lib";
    for Exec_Dir use "bin";
end test;

test.adb

with Interfaces.C;
with Ada.Text_IO;

procedure test is
    pragma Linker_Options("-lglfw3");
    pragma Linker_Options("-lgdi32");
    pragma Linker_Options("-lopengl32");
    function Init return Interfaces.C.int;
    pragma Import(C,Init,"glfwInit");
    success : Interfaces.C.int;
begin
   success := Init;
   Ada.Text_IO.Put_Line(success'Img);
end test;

使用gprbuild -P test.gpr进行编译并输出:

p:/gnat/2014/bin/../libexec/gcc/i686-pc-mingw32/4.7.4/ld.exe: cannot find -lglfw3

所以我在想 gdi32 winmm ,发现 opengl32 是因为它们已经安装在我的电脑上了。我不知道他们是否需要,但只是为了安全起见。找不到 glfw3 lib,所以我不知道我是否正确使用Linker_Option或将 libglfw3.a 文件放在何处。有没有一种很好的方法可以链接到c库?

1 个答案:

答案 0 :(得分:0)

pragma Linker_Options("-lglfw3dll");

是一种不好的方法,应该如下:

pragma Linker_Options("-lglfw3"); 

告诉链接器使用库文件libglfw3.a

要检查libglfw3.a是否在GNAT使用的对象路径中,请键入命令

  

gnatls -v

目前在Github的OpenGLAda上可以使用GPR项目文件完成与GLFW2和GLFW3的Ada绑定。