Call C++ function from C & Call C function from C++ (C和C++函数互相调用)

  • C++中调用C函数

这个比较容易,使用关键字extern就可以,有以下两种格式:

extern "language_name" declaration ;
extern "language_name" { declaration ; declaration ; ... }

例如:

int C_Coding(int a, float b);

做法是,

/* cpp_a.h */

extern "C" {

#include "a.h"

}

/* cpp_a.h */

extern "C" {

int C_Coding(int a, float b); /* 重定义所有的C函数 */

}

这样在C++程序中就可以调用C函数C_Coding了。


  • C中调用C++函数

调用一个类的public函数,

extern "C" int call_M_foo(M* m, int i) { return m->foo(i); }

分解开来主要以下几步:

1.        
C++头文件中,声明有public函数的C++

2.        
C++文件中,实现一个有public函数的C++

3.        
进行二次封装:在另一个C++文件中实现一个C函数接口,在这个 C函数中,对类的public函数进行调用。

4.        
将这个接口函数用extern导出,使得其他C函数可以调用该函数。

网上有很多例子可以参考:

http://blog.donews.com/xzwenlan/archive/2005/05/31/405799.aspx

http://blog.csdn.net/AbnerChai/archive/2006/11/29/1419214.aspx

 

推荐这里一篇讲如何混合C&C++代码的:

Reference:http://developers.sun.com/sunstudio/articles/mixing.html

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s