在我的项目中,核心库是 C/C++ 文件的一部分,而 UI 需要在 Objective C 中开发, 我能够从 Objective C/.mm 文件访问/调用 C++ 函数 但到目前为止没有运气,即我无法从 C++ 文件中调用 Objective C 函数, 当我尝试包含 Objective C header 甚至系统 header 时
#import <foundation/foundation.h>
得到大约 1000 多个编译错误,
类似的东西
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:180:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:180: error: expected unqualified-id before '@' token
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:182:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:182: error: expected initializer before '*' token
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:183:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:183: error: 'NSString' was not declared in this scope
/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:183:0 /Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:183: error: 'aSelectorName' was not declared in this scope
我是否缺少一些预编译标志等。 任何人都可以建议我,调用/访问从 NSObject 继承的 Objective-C 类的最佳方法,无需修改太多 C++ 代码,我只需要调用一个函数
代码结构/包含头文件的顺序是
Some system header file
Some Core Class Header file
#import <foundation/foundation.h>
最佳答案
如果您的 .cpp 文件包含需要使用 Objective-C 的 C++ 代码,则将该 .cpp 文件重命名为 .mm 或将 -x objective-c++
传递给编译器。
关于c++ - 混合 Objective C ,(*.m , *.mm & .c/.cpp ) 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714698/