0

如何将 GLFW 功能导入 Ada?

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

  • 测试.adb
  • 测试.gpr
  • 垃圾桶
  • 对象
  • libglfw3.a
    • libglfw3.a

测试.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;

测试.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

所以我在想当 gdi32winmmopengl32被发现是因为它们已经安装在我的电脑上。我不知道他们是否需要,但只是为了安全起见。找不到 glfw3库,所以我不知道我是否以正确的方式使用 Linker_Option 或将libglfw3.a文件放在哪里。有没有链接到 c 库的好方法?

4

1 回答 1

0
pragma Linker_Options("-lglfw3dll");

是一个不好的方法,它应该如下所示:

pragma Linker_Options("-lglfw3"); 

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

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

蚋 -v

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

于 2014-11-12T10:17:45.167 回答