昨天在看了篇关于C++中如何调用C,通过那篇文章,对于extern "C"有了比较深的理解。所以,突然想到怎么样在C中调用C++中?还是用extern "C"吗?或者是其他方法?
所以,从网上查找资料,找到一篇文章,在这里先感谢作者。另外,如果各位看到这篇文章哪里有什么问题,请指教,因为,我对于C中调用C++确实没有一点概念,这篇文章算是关于这方面知识的起步了。
正文如下。
将C++函数声明为extern "C"(在你的C++代码中做这个声明),然后调用它(在你的C或C++中代码里调用)。例如:
-
// C++ code:
-
extern "C" void f(int);
-
void f(int i)
-
{
- // ...
-
/* C code: */
-
void f(int);
-
void cc(int i)
-
{
-
f(i);
-
/* ... */
- }
-
// C++ code:
-
class C
-
{
-
// ...
-
virtual double f(int);
-
};
-
-
extern "C" double call_C_f(C* p, int i) // wrapper function
-
{
-
return p->f(i);
- }
-
/* C code: */
-
double call_C_f(struct C* p, int i);
-
-
void ccc(struct C* p, int i)
-
{
-
double d = call_C_f(p,i);
-
/* ... */
- }
-
// C++ code:
-
void f(int);
-
void f(double);
-
-
extern "C" void f_i(int i) { f(i); }
- extern "C" void f_d(double d) { f(d); }
-
/* C code: */
-
void f_i(int);
-
void f_d(double);
-
-
void cccc(int i,double d)
-
{
-
f_i(i);
-
f_d(d);
-
/* ... */
- }
该翻译文档Bjarne Stroustrup的原文链接地址是:
作者的Demo为:
cCallCppDemo.rar原文:http://www.cppblog.com/franksunny/archive/2007/11/29/37510.html