我有.a扩展名的文件,以及代表该文件的file.h .a文件中的函数。
如何从新的C项目中调用.a文件中的函数?
我正在使用Visual Studio,而且我在互联网上发现并且没有 找到了有用的东西。
由于
答案 0 :(得分:1)
#include 'xxx.h"
然后在代码中,假设ABC是库中的一个函数,只需调用它: int x = ABC();
您还必须将程序与库链接。
答案 1 :(得分:1)
在Visual Studio项目中使用外部库有两个步骤:您需要同时满足编译器和链接器。
<强>编译器强>
这就像在应用程序中包含头文件一样简单;或者将头文件直接放在源树中,或者,如果它存在于另一个目录中,则将其添加到包含路径中(右键单击项目 - > gt;属性,选择“C / C ++”并将目录添加到“其他包含目录”属性。)
您现在应该可以#include "myexternallibrary.h"
没有问题,这将允许编译器识别库函数。
<强>链接器强>
一般来说,为了满足链接器,指令与上面的头文件非常相似:将库二进制文件直接转储到项目树中并通过Properties-&gt; Linker-&gt; Input-&gt;“附加依赖项”引用它“(例如,mylibrary.a);如果库位于项目树外部的目录中,并且您不希望在此属性中包含库的完整路径,则可以将该目录添加到链接器的搜索路径:Properties-&gt; Linker-&gt ; General-&gt;“其他图书馆目录”。
由于您明确声明库文件是 .a 格式,而不是 .lib ,因此下一步是事情变得有点棘手。
.a库文件通常来自MinGW工具链,它可能与Visual Studio工具链正常工作也可能无法正常工作。有关详细信息,请参阅相关信息:From MinGW static library (.a) to Visual Studio static library (.lib)
您可能会很幸运,并且库的标准C运行时的使用在MSVC和MinGW(或生成.a文件的任何工具链)之间是兼容的。
作为旁注,请确保您尝试使用的库实际上不是Linux库,因为 .a 库扩展名也是GCC的默认库(最常见的C) Linux的编译器,它在Windows环境中不兼容。