C++ C 项目中的静态库链接
C++ static library linking in a C project
我正在尝试将C++库静态链接到 C 项目,但似乎找不到出路。我阅读了多个帖子,但没有任何帮助。 下面是我的Makefile的片段:
CFLAGS += -I../path/to/headers
LIBS += ../path/to/lib.a
我收到以下链接错误:
"undefined reference to ...
collect2: ld returned 1 exit status"
我检查了这篇文章以进行订购,但我不认为这是问题: 具有静态库的 C++ 未定义引用
我想知道这是否可能。如果是这样,我需要将哪些标志添加到我的 C 项目 Makefile 中。
如果您假装链接的库不准备在目标代码中导出与 C 兼容的函数名称,则应向项目添加 C++/C 桥接。
此桥可能包含一个C++头文件和源文件,您可以在其中编写使用 C++ 库的代码C++其中需要从 C 程序中使用的符号以 C 兼容的方式导出。
你应该做这样的事情:
桥.h
#include <cpplibrary.h>
#ifdef __cplusplus
extern "C" {
#endif
int bridge();
#ifdef __cplusplus
}
#endif
桥.cpp
#include "bridge.h"
extern "C" {
int bridge() {
CppLibrary *object = new CppLibrary();
return object->returnInt();
}
} // extern "C"
此C++代码是编译的,导出 C 链接器可以理解的名称,允许间接使用该给定库的C++代码。
相关文章:
- 基于boost的程序的静态链接——zlib问题
- 使用gcc从静态链接的文件中查找可选符号
- 使用转换器提升 Python 问题 - 静态链接
- C++实用程序::转换在静态链接库中不起作用
- 将源中的 GLEW 与 cmake 静态链接
- 在发布模式下启动使用库的静态链接编译的应用程序时出错
- libavdevice 和 x11 的静态链接库应该以什么顺序链接?
- 静态链接启用 PIC 的库时出现链接器 PIC 错误
- 静态链接库时,收到链接器错误:找不到 -lgcc_s
- 静态链接 glibc & boost_python36 for Python extension
- 我可以在C++中配置静态链接吗?
- 协议缓冲区的静态链接会导致与现有符号冲突
- C++标准是否定义了结构中成员函数的函数内定义是否必须具有静态链接?
- 静态链接 Visual Studio dll 到动态链接的 sfml 项目
- 我可以加载与库静态链接的 dll 吗?
- 静态链接MSVC库,动态链接Qt
- C++:找不到静态链接
- OpenSSL AES仅适用于某些计算机,即使具有静态链接也是如此
- CURL 静态链接未解析的外部符号
- 如何强制Windows.h在Visual Studio中静态链接而不是动态链接?