使用 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;
这里没有弄错,但上面写着
所有NSString
、NSObject
、NSLog
都是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 分机相关的相同问题的其他人有所帮助。
谢谢。
我正在使用 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;
这里没有弄错,但上面写着
所有NSString
、NSObject
、NSLog
都是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 分机相关的相同问题的其他人有所帮助。
谢谢。