Objective-C++ Metal 项目中的链接器错误

Fsz*_*ton 1 macos linker objective-c objective-c++ metal

我在 El Capitan 上,我通过 Xcode 创建了一个新项目,我选择了其中OS X -> Application -> Game (Language: Objective-C, Game Technology: Metal)

该项目最初编译并运行没有问题。

然后我将主视图控制器重命名GameViewController.mGameViewController.mm使用 Objective-C++。当我现在构建时,我收到以下链接器错误:

体系结构 x86_64 的未定义符号:“_MTKMetalVertexDescriptorFromModelIO”,引用自:GameViewController.o 中的 -[GameViewController _loadAssets] “_OBJC_CLASS_$_MDLMesh”,引用自:GameViewController.o 中的 objc-class-ref “_OBJC_CLASS__$_MTKMesh”,引用自:objc GameViewController.o 中的 -class-ref “_OBJC_CLASS_$_MTKMeshBufferAllocator”,引用自:GameViewController.o 中的 objc-class-ref:未找到架构 x86_64 的符号

我尝试过将金属标头包裹进去extern "C" {},但这没有帮助。

我怎样才能让它构建?

Mus*_*ang 5

原因是 Objective-C 有一个相对较新的功能,即包含标头会自动将框架添加到链接命令中。Apple 提供的模板项目默认启用该功能。因此,构建设置中的框架列表为空。通过将语言更改为 Objective-C++,您就放弃了该功能,并且必须手动添加框架。