【问题标题】:How do i call methods from .A file in C project?如何从 C 项目中的 .A 文件中调用方法?
【发布时间】:2016-01-28 17:51:38
【问题描述】:

我有一个扩展名为 .a 的文件,而 file.h 则代表 .a 文件中的函数。

如何从新的 C 项目调用 .a 文件中的函数?

我正在使用 Visual Studio,我在整个互联网上搜索并没有 发现了一些有用的东西。

谢谢

【问题讨论】:

    标签: c visual-studio static-libraries .a


    【解决方案1】:
    #include 'xxx.h"
    

    然后在代码中,假设 ABC 是库中的一个函数,调用它即可: int x = ABC();

    您还必须将程序与库链接。

    【讨论】:

    • 在互联网上搜索“visual studio add library”,您将获得大量点击。
    • Visual Studio 是否支持 .a 格式?据说需要处理这样的文件,以便它们具有 .lib 扩展名...
    【解决方案2】:

    在 Visual Studio 项目中使用外部库有两个步骤:您需要同时满足 compiler 和 linker。

    编译器

    这就像在应用程序中包含头文件一样简单;将头文件直接放在源代码树中,或者,如果它位于另一个目录中,请将其添加到包含路径(右键单击项目->属性,选择“C/C++”并将目录添加到“附加包含目录”属性)。

    您现在应该能够#include "myexternallibrary.h" 没有问题,这将允许编译器识别库函数。

    链接器

    一般来说,为了满足链接器,指令与上面的头文件非常相似:将库二进制文件直接转储到您的项目树中,并通过 Properties->Linker->Input->“Additional Dependencies” 引用它(例如, 图书馆.a);如果库位于项目树外部的目录中,并且您不想在此属性中包含库的完整路径,则可以将该目录添加到链接器的搜索路径中:Properties->Linker->General ->“其他库目录”。

    由于您明确声明库文件是 .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 环境下不兼容。

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多