在静态库中混合 C 和 C++ 代码

mixing C & C++ code in static library

本文关键字:C++ 代码 混合 静态      更新时间:2023-10-16

我试图创建一个包含C和c++函数的静态库,然后在C环境中使用此库。根据在C代码中使用c++库,我将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. exe]"。a] -lNAMEX…c_source.c",它给了我与c++扩展相关的错误(即,"对operator new(unsigned long)", "undefined reference to std::allocator::~allocator()'的未定义引用")。

有没有办法解决这个问题?

使用g++作为链接器:

gcc my_c_file.c -c
g++ my_c_file.o -L blabla -lblabla