如何将GLFW功能导入Ada?
使用GNAT GPS作为编译器并具有以下文件夹结构:
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库?
答案 0 :(得分:0)
pragma Linker_Options("-lglfw3dll");
是一种不好的方法,应该如下:
pragma Linker_Options("-lglfw3");
告诉链接器使用库文件libglfw3.a
要检查libglfw3.a
是否在GNAT使用的对象路径中,请键入命令
gnatls -v
目前在Github的OpenGLAda上可以使用GPR项目文件完成与GLFW2和GLFW3的Ada绑定。