混合C&静态库中的C ++代码

时间:2011-08-29 09:50:45

标签: c++ c static-libraries

我正在尝试创建一个包含C和C ++函数的静态库,然后在C环境中使用该库。根据{{​​3}},我将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 to std :: allocator :: ~addocation()'”)。

有没有解决这个问题的方法?

1 个答案:

答案 0 :(得分:3)

使用g ++作为链接器:

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