我正在将我的 App Delegate 文件从 .m 转换为 .mm(Objective-C 到 Objective-C++),以便我可以访问用 Objective-C++ 编写的第三方库。在 Objective-C 中,我的应用程序委托构建并运行良好。但是当我更改扩展名时,项目构建并且我得到链接错误,所有这些都是我使用的用 C 编写的静态库中缺少的符号。这些错误是具有以下格式的经典链接错误:
“MyFunction(arguments)”,引用自:
-MyAppDelegate.o 中的[MyAppDelegate myMethod]
未找到符号
所有问题都在应用程序委托对象中。我知道我已经准备好编译 Objective-C++,因为我的 ViewController 文件是 .mm。所以我的问题有几个部分。
首先,这些符号在我不能使用的意义上真的不存在吗?换句话说,是否不可能从 Objective-C++ 文件中访问普通的旧 C 函数?如果这是真的,那就太不幸了。我认为几乎所有的 Objective-C 代码,当然所有至少构建为 .mm 的 Objective-C 代码都是有效的 Objective-C++。我错了吗?
如果没有,知道如何防止这些错误吗?Objective-C++ 中是否有我不知道的不同标头规则?
感谢您的任何帮助。