c++ - 混合 Objective C ,(*.m , *.mm & .c/.cpp ) 文件

标签 c++ objective-c cocoa objective-c++

在我的项目中,核心库是 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/

相关文章:

c++ - 缓存了多少缓存行?

c++ - 在 C/C++ 中使用字符执行算术运算

c++ - 64 位架构的 iOS JUCE 库问题

iphone - 我怎样才能从Objective-C的数组中获得所有可能的数字组合?

objective-c - 在 Cocoa 中创建半透明、带边框的圆角窗口?

cocoa - 如何向 OS X 状态栏添加动画图标?

c++ - 将 vector::iterator 分配给 char 数组后 VS 2003

c++ - 线程 1 中的堆栈溢出 : can't grow stack to 0xffe601ff8 Valgrind Error

ios - 获取复杂的NSDictionary的内容

macos - 用于最大化窗口任务的 Mac OSX 守护进程