objective-c - 从 .mm 文件中的函数内部调用 C 函数

标签 objective-c c

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

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

C_Class.h

void do_something(void);

C_Class.c

void do_something(void)
{
}

然后我有一个 .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();

  }

问题是我得到这个错误:

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

本次质疑已answered其他地方,但响应似乎与我的情况无关。我在 XCode 中工作,已经停止运行我的应用程序,重新构建它但仍然遇到相同的错误。由于我是编程新手,我觉得这与我调用 C 函数的方式有关。

有什么帮助吗?


编辑 1

如果有人感到如此无私,他们可能会 download the actually files here .

最佳答案

.mm 文件正在寻找调用函数名称的错位版本。您需要围绕 C++ 编译文件看到的 C 函数声明使用 __BEGIN_DECLS__END_DECLS,或者您需要自己执行等效操作。这个想法是在 (Obj-)C++ 编译器看到时将这些函数声明标记为 extern "C",但在任何其他类型的编译器看到时则不会。

关于objective-c - 从 .mm 文件中的函数内部调用 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984523/

相关文章:

objective-c - UDP 不同网络上的两台计算机如何相互连接?

iphone - iCloud 和 CoreData

c - 为什么传递给函数的二维数组需要它的大小?

java - 什么是非 unicode 应用程序

c - 选项卡中的元素 WinAPI

objective-c - 为什么使用两种类型(边界/框架)而不是一种来描述 View ?

objective-c - NSNumber 返回与原始 int 不同的值

c - 变量获取错误值?

objective-c - 有关性能优化的最佳 wwdc 视频是什么?

c - WINAPI 中的最大和最小窗口大小