这是一个有点模糊且难以查明原因的问题之一.我会尽量保持简单.
我创建了一个带有如下标题的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
如果有人感觉如此无私,他们可以在这里下载实际文件.
该.mm文件正在寻找调用函数名称的错误版本.你需要或者__BEGIN_DECLS和__END_DECLS周围由C++看到的C函数声明-编译的文件,或者你需要自己做的等价物.我们的想法是将这些函数声明标记为extern "C"(Obj-)C++编译器所看到的,但是当被任何其他类型的编译器看到时都不会.
| 归档时间: |
|
| 查看次数: |
1257 次 |
| 最近记录: |