2011-08-29 50 views
0

我在创建一个包含C和C++函数的静态库,然后在C环境中使用这个库。根据Using C++ library in C code,我将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.a] -lNAMEX ... c_source.c”,它给出了我有关C++扩展的错误(即“未定义的引用operator new(unsigned long)", "undefined reference to std :: allocator ::〜allocator()'”)。

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

回答

3

使用G ++作为连接:

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

或添加'-lstdC++'仍然使用gcc。如果你有一个,你应该有另一个,但... – rubenvb