本文参考了C中如何调用C++函数
C和C++之间库的互相调用
如有侵权,请告知,谢谢。
这几天在写qt的东西,我作为一个终端设备要通过uart与下面单片机进行交互,关于通信协议已经写完(c写的),给他们单片机移植的话的确是挺方便的,但是qt用的是c++。于是调用起来就是
C++ -> C -> C++
略略有些麻烦
分两部分来说说吧
C++调用C
这个相对来说会简单一些,主要思路就是保证编译出来的函数符号能够被链接到。
同样的函数在放在c++跟c中编译出来的结果是不一样的。
为了保持一致性就需要加入
extern "C"
{
//代码
}
为了C++ C通用,可以这么写
#ifdef __cplusplus
extern "C"
{
#endif
//代码
#ifdef __cplusplus
}
#endif
其中__cplusplus在c++编译的时候就可以调用到extern “C”,c编译的时候就跟正常的c编译一样。
C调用c++
主要思路还是差不多,要保证连接符号相同。
隔了好久好久再来写,然而这几天过得并不开心。。
真是大姨夫来了
C调用静态函数的话 在另外一篇里面已经有啦。
c调用对象的时候,
h:
class a
{
public:
static int * addr;
void test();
}
void yoyoyo();
cpp:
void a::test()
{
cout << "hello" <<endl;
}
void yoyoyo()
{
a* tmp = (a*)a::addr
tmp->test();
}
a * b = new a();
a::addr = (int *)b;
yoyoyo();
哈哈哈啊哈哈 隔了好久写的 希望没写错
有什么不对的 不要打我哈 差不多意思就这样啦