使用 ObjC 时出错 class include in .cpp file (unqualified-id @class)

Getting error while using ObjC class include in .cpp file (unqualified-id @class)

我正在使用 Wikitude SDK,在 Wikitude 示例文件夹中添加一些支持的文件时,它向我显示 Foundation 文件错误,如下所示。

In file included from /Volumes/DATA/Dhanesh/Projects/experiments/AR/ARWikiDemo/ARWikiDemo/WikiSDK/Controller/Examples/Categories/PluginsAPI/CustomCamera/YUVFrameInputPlugin.cpp:11: In file included from /Volumes/DATA/Dhanesh/Projects/experiments/AR/ARWikiDemo/ARWikiDemo/WikiSDK/Controller/Examples/Categories/PluginsAPI/CustomCamera/WTDeviceCamera.h:9: In file included from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.3.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:8: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.3.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:492:1: error: expected unqualified-id @class NSString, Protocol;

这里没有弄错,但上面写着

所有NSStringNSObjectNSLog都是unqualified-id @class

我已经设置了所有相关的链接器标志和 Header & 库搜索路径,但仍然出现上述错误。

任何人都可以指导我这里出了什么问题吗?

错误截图供参考:

提前致谢!

对于上面的问题,我纠结了很久,最后,我用下面的解决方案来总结。

  • 要在 ObjC 中使用 .cpp 文件,我们需要将 .cpp 扩展名转换为 .mm,仅供 ObjC++ 编译器使用。 (感谢 Mats 的评论,它对我帮助很大。)
  • 在构建设置中将源代码编译为 ObjectiveC++

参考 Link 1: Objective-C++ and .cpp files in Xcode

参考 Link 2: Adding C++ code to an iOS project

希望这对面临与 it.CPP 分机相关的相同问题的其他人有所帮助。

谢谢。