我需要从 c 文件中调用 cpp 方法。我为此写了这个界面..
.cpp 文件
extern "C" void C_Test(int p){
Class::CPP_Test(p);
}
文件
extern void C_Test(int p);
void C_Function(){
C_Test(10); //error
}
我在 c 文件中收到错误“未定义对 C_Test(int) 的引用”
知道有什么问题吗?
您必须只为函数原型声明 extern,并确保正确链接。除此之外,CPP_Test(p) 必须是 Class 的静态成员,否则您的代码将不起作用。最后,extern "C" 必须用括号括起来它的内容,更像
extern "C"
{
void C_Test(int p)
{
Class::CPP_Test(p);
}
}
告诉我们这是否有效。
您是否使用 C++ 编译器编译两者?C++ 编译器可能会将 C 源文件编译为 C++,在这种情况下它将执行名称修改,因此您需要确保使用 C 编译器编译 C 源文件。
我对这两种类型的文件都使用了 C++ 编译器。没有“C”它可以工作!也没有 extern "c" 它可以工作!