我已经阅读了这篇文章,它解释了如何从纯C代码调用基于C++的函数。
以下示例最能说明该方法:
// 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);
/* ... */
}
然而,我不明白在哪里定义了由'p'指向的实例。请注意,在C代码中,它被传递为指向不透明结构体的指针,在C++代码中,它被认为是指向有效的class C
实例的指针,但我没有看到这个指针被初始化的地方。
p.s. 当然,每个与不同语言相关的代码块都使用适当的编译器进行编译,并创建不同的目标文件。
struct C;
来声明它。 - Bryan Chenstruct C
的定义 - 只有 C++ 代码应该看到。 - Peter