2012-01-29 57 views
0

如何将2个c库文件链接到一个C++文件?gcc - 将多个c文件链接到一个C++文件

现在我这样做:

> gcc -c file1.c (this works fine) 

> gcc -c file2.c (this works fine) 

> g++ -c myc++file.cpp (this works fine) 

> g++ -o program myc++file.o file1.o file2.o 

- >我就在这最后一个错误说他们是一个不确定的参考MYC++ file.o的功能,但功能在file2.o中定义。有什么不对,但我不知道。

任何想法?

回答

3

这个功能是static

myc++file.cpp中使用extern "C"吗?

如果答案是noyes,给我们展示一些代码。

(顺便说一句,请尝试使用nm检查,如果该功能是真的file2.o

+0

技术上你们都是对的,非常感谢快速repsonse。我看到你先回应。对于任何与此相同的问题,这个答案是好的,然后也看看这个链接:http://stackoverflow.com/questions/3789340/combining-c-and-c-how-does-ifdef-cplusplus-work – 2012-01-29 21:34:20

2

您需要在函数的声明中使用extern "C"
当C++看到一个外部函数时,它会压缩名称,以标识参数和返回值类型。当试图链接它与C代码时,名称不匹配。
extern "C"告诉C++不要破坏名称,所以它会成功链接到C代码。