我可以在1 C ++项目中混合使用c和cpp文件吗?
我还是初学者,我正在使用eclipse。
我有一个项目,其中混合了c文件和cpp文件。 链接器向我抛出错误:
undefined reference to
将所有*.c
文件重命名为*.cpp
,错误消失。 所以我不能混合这些文件或这是一些编译器/链接器选项问题?
我的选择:
GCC C ++编译器:
-I/usr/include/glib-2.0 -I/usr/include/gtk-2.0 -I"/myPath" -O0 -g3 \ -Wall -c -fmessage-length=0 `pkg-config --cflags glib-2.0 gtk+-2.0
GCC C编译器:
-I/usr/include/glib-2.0 -I/usr/include/gtk-2.0 -I"/myPath" -O0 -g3 \ -Wall -c -fmessage-length=0 -std=c99 `pkg-config --cflags glib-2.0 gtk+-2.0`
GCC C ++链接器:
-L/usr/include/glib-2.0/glib `pkg-config --libs gtk+-2.0`
好吧,因为它说的是C ++ Linker,这是否意味着c文件中的目标文件无法链接到项目中(默认情况下)?
extern "C"
是一种方法。 另一种方法,假设你的C文件是(几乎无处不在)排序,已经可以编译为C ++,只是强迫编译器将它们视为C ++(它给它们适当的名称修改以使用你的C ++文件)。 对于GCC,这是-x c++
。
你需要像这样包装 C代码
extern "C" { #include "sample1.h" }
更好的方法就是在这个StackOverflow问题中 ,在C头文件中。
使用:
#ifdef __cplusplus extern "C" { #endif
在所有C头文件的开头。
并使用:
#ifdef __cplusplus } #endif
在所有C头文件的末尾。