Makefile:将库添加到另一个项目
Makefile: add library to another project
我想更改现有的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"
块的头文件中,如:
#ifdef __cplusplus
extern "C" {
#endif
int myFunction();
int someOtherFunction(char *);
#ifdef __cplusplus
} // extern "C"
#endif
确保只在代码块中包装你自己的函数定义;从头文件中#include
获取的任何外部库都应该在块之外。
参见:在c++源代码中,extern "C"的作用是什么?
相关文章:
- 运行同一解决方案的另一个项目的项目
- 是否可以将 EXE 文件作为 lib 文件链接到另一个项目?
- 如何使用另一个项目命名空间?
- 单元测试类无法在我要测试的同一解决方案中的另一个项目中找到类
- 如果我尝试将对话框从一个项目移动到另一个项目,我是否需要从 rc 文件中复制 DESIGNINFO、对话框信息和AFX_
- OpenCV:文件存储操作员">>"在一个项目中工作,但不在另一个项目中工作(在同一类上)
- 如何将另一个项目中用 C 编写的源代码包含在我自己的项目中,C++在 Visual Studio 中
- 将过滤器中的所有.cpp和.h移动到另一个项目并更正其文件夹位置
- 在另一个项目中包括继承的类时,抽象类的链接器错误
- 创建在另一个项目中定义的类对象
- 如何在不复制的情况下将C++类从一个项目重用到另一个项目
- Cmakelist仅用于标题项目,并将其用于另一个项目
- 在另一个项目中将模板函数用作dll
- 在同一解决方案但不同配置的另一个项目中使用一个类
- 未解析的外部符号来自一个项目中的静态库,而不是另一个项目.(C++)
- std :: getline在一个项目中汇总了罚款,但不是另一个项目
- 导出visual studio c++项目以在另一个项目中使用,而不显示.cpp和.h源文件
- 有没有办法设置 Eclipse 以使用另一个项目的输出作为库?
- C++/VS 2012-多项目解决方案:一个项目中存在链接器错误,但另一个项目没有
- Boost:阻塞,直到队列有另一个项目