我目前正在尝试在添加一些 C 代码后编译我的项目。
我正在使用Bruce Schneier 网站上提供的 Paul Kocher 的河豚算法实现。
由于我在我的工作区中包含了blowfish.c 和blowfish.h,我的编译器正在疯狂运行。就像它不能识别 Objective-c 代码一样,指向 NSObject 类的错误!
我试图 .mm 调用类,但问题仍然存在。
在 SO 上找到的每个答案都谈到包括 C++ 文件,但这不是我的 pb ...
也许我错过了一个编译器指令?
我目前正在尝试在添加一些 C 代码后编译我的项目。
我正在使用Bruce Schneier 网站上提供的 Paul Kocher 的河豚算法实现。
由于我在我的工作区中包含了blowfish.c 和blowfish.h,我的编译器正在疯狂运行。就像它不能识别 Objective-c 代码一样,指向 NSObject 类的错误!
我试图 .mm 调用类,但问题仍然存在。
在 SO 上找到的每个答案都谈到包括 C++ 文件,但这不是我的 pb ...
也许我错过了一个编译器指令?
最有可能的是,blowfish.c 的编译正在使用您之前建立的预编译头 ( .pch
) 文件,其中包括一个 Objective-C 框架。只需禁用预编译的标头,您应该就可以了。您也许可以对这些框架进行条件化,但就个人而言,我发现预编译的标头比它们的价值更麻烦。
感谢microtherion,我发现了问题。
我的 .pch 文件被声明为:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
#import "AppDelegate.h"
#import "UINavigationController+Rotation.h"
#import "Categories.h"
最后 3 个 #import 文件是 Objective-C。
我刚刚将#endif 位置更改为:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "AppDelegate.h"
#import "UINavigationController+Rotation.h"
#import "Categories.h"
#endif