从.mm文件中的函数内调用C函数

Eri*_*tto 2 c objective-c

这是一个有点模糊且难以查明原因的问题之一.我会尽量保持简单.

我创建了一个带有如下标题的C类:

C_Class.h

void do_something(void);

C_Class.c

void do_something(void)
{
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个.mm文件工作得很好,直到其中一个函数我添加了我之前创建的C sub_routine:

  #import "C_Class.h" // included in the .h file 


 // then in the .mm file

 - (void)working_function{
  .... some working code ......
  do_something();

  }
Run Code Online (Sandbox Code Playgroud)

问题是我收到此错误:

 -[MyDotMMfile working_function] in MyDotMMfile.o
 Symbol(s) not found
 Collect2:ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

这个问题已在其他地方得到解答,但答案似乎与我的情况无关.我在XCode工作,已停止运行我的应用程序,重建它仍然得到相同的错误.因为我是编程新手,所以我觉得它与我调用C函数的方式有关.

有帮助吗?


编辑1

如果有人感觉如此无私,他们可以在这里下载实际文件.

Jer*_*man 7

.mm文件正在寻找调用函数名称的错误版本.你需要或者__BEGIN_DECLS__END_DECLS周围由C++看到的C函数声明-编译的文件,或者你需要自己做的等价物.我们的想法是将这些函数声明标记为extern "C"(Obj-)C++编译器所看到的,但是当被任何其他类型的编译器看到时都不会.