我正在尝试创建一个包含 C 和 C++ 函数的静态库,然后在 C 环境中使用该库。根据 Using C++ library in C code ,我将 C 函数包装在 C++ 函数周围。
库的 makefile 使用“ar -rvs libNAMEX.a $(OBJECTS)”,其中 OBJECTS 包含由 gcc 或 g++ 编译的目标文件,具体取决于类型(GCC 版本 4.4.1)。
我在构建库时没有遇到任何错误。但是当我尝试编译一个使用库的 C 文件(使用 GCC 4.5.1 的交叉编译版本)时:“gcc -L [PATH TO libNAMEX.a] -lNAMEX ... c_source.c”,它给出我遇到了与 C++ 扩展相关的错误(即,“对 operator new(unsigned long) 的 undefined reference ”、“对
std::allocator::~allocator()' 的 undefined reference ”)。
有什么办法可以解决这个问题吗?
最佳答案
使用 g++ 作为链接器:
gcc my_c_file.c -c
g++ my_c_file.o -L blabla -lblabla
关于c++ - 在静态库中混合 C 和 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7228553/