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

Comments:

Post a Comment:
Comments are closed for this entry.
About

williamxue

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today