gpt4 book ai didi

c++ - Makefile:将库添加到另一个项目

转载 作者:行者123 更新时间:2023-11-28 06:08:11 25 4
gpt4 key购买 nike

我想更改现有的 makefile 以包含我自己创建的另一个静态库。我按照一些说明制作了图书馆;它目前包含除main.o 之外的所有.o 文件。让我们调用我的库 libABC.a。如果有所不同,我正在修改的包是用 C++ 编写的,而我包含的库是用 C 编写的。

到目前为止,我已经将 -lABC 添加到我的库列表中,并将该库与其他库放在同一目录中,这样我就不必添加另一个 -L命令。我已将所有头文件移动到包的 /include 目录(不确定我是否必须这样做),这样我就可以避免添加另一个 -I 命令。按原样编译没有错误,但是如果我尝试为库中的一个头文件添加 #include 命令并调用函数,我会得到一个 undefined reference to function () 错误。

关于我可以做什么的任何想法?

最佳答案

由于包是用 C++ 编写的,而你的库是用 C 编写的,你可能需要使用 extern "C" 链接,因为 C++ 可能希望对你的符号进行名称修改。

最简单的方法是将您的 C 函数定义包装在 extern "C" block 的 header 中,例如:

#ifdef __cplusplus
extern "C" {
#endif

int myFunction();
int someOtherFunction(char *);

#ifdef __cplusplus
} // extern "C"
#endif

确保只在 block 中包含您自己的函数定义;您从 header 中#includeing 的任何外部库都应该在该 block 之外。

另请参阅:In C++ source, what is the effect of extern "C"?

关于c++ - Makefile:将库添加到另一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31927451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com