当前位置: 技术问答>linux和unix
关于.cpp和.c的混合编程
来源: 互联网 发布时间:2016-10-14
本文导语: C++写的是几个类(JRTP),C中主要是open()、read()、send()等函数。 我的想法是,用g++编译cpp,用gcc编译c,然后将编译出来的.o文件用gcc连接,结果出错了,用g++连接.o文件还是有错。 貌似可以把.c全部...
C++写的是几个类(JRTP),C中主要是open()、read()、send()等函数。
我的想法是,用g++编译cpp,用gcc编译c,然后将编译出来的.o文件用gcc连接,结果出错了,用g++连接.o文件还是有错。
貌似可以把.c全部写成.cpp然后用g++编译,但是不知道会不会带来意想不到的问题。
那么解决这个问题有些什么方法呢?
我的想法是,用g++编译cpp,用gcc编译c,然后将编译出来的.o文件用gcc连接,结果出错了,用g++连接.o文件还是有错。
貌似可以把.c全部写成.cpp然后用g++编译,但是不知道会不会带来意想不到的问题。
那么解决这个问题有些什么方法呢?
|
C++的头文件用
#ifdef __cplusplus
extern "C"
{
#endif
// your C++ header here
#ifdef __cplusplus
}
#endif
|
函数名字修饰问题。C++的修饰和C是不一样的。你可以自己试一试,用objdump或者nm命令查看一些就知道了。所以如果你在C++中不用extern C的话,C的编译单元就找不到那个函数名字了。
|
c++里的c代码用extern c,就不会有问题
|
|
extern c
|
怀疑链接时命令有问题,,别直接用gcc命令链接,,用ld命令链接试试。
|
extern "C"
就可以了。
就可以了。
|
编译后变量和函数的符号表 C的格式还是CPP的格式