0

我需要从 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) 的引用”

知道有什么问题吗?

4

3 回答 3

1

您必须只为函数原型声明 extern,并确保正确链接。除此之外,CPP_Test(p) 必须是 Class 的静态成员,否则您的代码将不起作用。最后,extern "C" 必须用括号括起来它的内容,更像

extern "C"
{
  void C_Test(int p)
  {
    Class::CPP_Test(p);
  }
}

告诉我们这是否有效。

于 2012-08-22T12:43:24.347 回答
1

您是否使用 C++ 编译器编译两者?C++ 编译器可能会将 C 源文件编译为 C++,在这种情况下它将执行名称修改,因此您需要确保使用 C 编译器编译 C 源文件。

于 2012-08-22T13:17:15.850 回答
0

我对这两种类型的文件都使用了 C++ 编译器。没有“C”它可以工作!也没有 extern "c" 它可以工作!

于 2012-08-30T14:10:54.277 回答