【问题标题】:Failing to import c-file in objective-c无法在objective-c中导入c文件
【发布时间】:2013-05-25 01:59:28
【问题描述】:

我目前正在尝试在添加一些 C 代码后编译我的项目。

我正在使用 Bruce Schneier's website 上提供的 Paul Kocher 的河豚算法实现。

由于我在我的工作区中包含了blowfish.c 和blowfish.h,我的编译器正在疯狂运行。就像它不识别Objective-c代码一样,指向NSObject类的错误!

我尝试 .mm 调用类,但问题仍然存在。

在 SO 上找到的每个答案都谈到包括 C++ 文件,但这不是我的 pb...

也许我错过了一个编译器指令?

【问题讨论】:

  • c 文件应该没问题,但您可能需要用extern "C" { ... } 包装标题。有吗?
  • 你能发布一个示例项目吗?
  • @Dave:不,它没有。你能告诉我更多吗?
  • @Grady:啊!它适用于一个空的示例项目!
  • @Martin 如果它在一个空的示例项目中工作,我会确保你没有#includ'ing .cpp 文件

标签: ios objective-c c


【解决方案1】:

最有可能的是,blowfish.c 的编译正在使用您之前建立的预编译头 (.pch) 文件,其中包括一个 Objective-C 框架。只需禁用预编译的标头,您应该就可以了。您也许可以对这些框架进行条件化,但就个人而言,我发现预编译的标头比它们的价值更麻烦。

【讨论】:

  • 好镜头,这正是问题所在。请参阅我的答案以获得更精确的信息。谢谢!
【解决方案2】:

感谢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    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2018-07-04
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多