GNAT中使用DLL
本篇为翻译文档
为了使用DLL(称为“API.DLL”)中的服务,在你的ADA工程中你必须有:
-
关于API.DLL中的你想访问的例程与/或变量的ADA声明。如果没有合适的ADA
声明,则需要从和DLL一起提供的C/C++头文件生成。
-
导入库(“libAPI.dll.a”或“API.LIB”)。像先前提到的一个导入库是一个包含加载时
将被填充用于定位实际的“API.DLL”例程的导入表的静态链接库。有时你没有一个
想使用的DLL的导入库。接下来的章节将解释如何生成一个导入库。注意这是可选的。
-
实际的DLL,“API.DLL”
一旦你有了以上的一切,就可以编译一个使用API.DLL中服务的ADA工程,工程主子程序为My_Ada_App,你的简单的命令问题
$ gnatmake My_Ada_App -largs -lAPI
Gnatmake命令参数中最后的参数“-largs -lAPI”告诉GNAT连接器去寻找一个导入库。连接器将按照一个特定顺序寻找导入库名称:
-
“libAPI.dll.a”
-
“API.dll.a”
-
“libAPI.a”
-
“API.lib”
-
“libAPI.dll”
-
“API.dll”
前三个是GNU风格的导入库。第4个是微软风格的导入库。最后的两个是实际的DLL名称。
注意,如果Ada包中对“API.DLL”的声明包含以下编译指令pragma
Pragma Linker_Options(“-lAPI”);
你将不需要在gnatmake命令参数的末尾加入“-largs -lAPI” 。
如果任意上述项目丢失你将必须自行制作。接下来的章节解释如何使用一个叫“API.DLL”的示例DLL。