包含框架工作的链接器错误?

时间:2011-10-21 14:07:07

标签: iphone objective-c xcode linker ios5

在我的应用程序中,我包含一个私有框架。

我项目中的框架文件。

当我运行应用程序时,我遇到了如下所示的链接器错误。

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_MessageWebLayer", referenced from:
      objc-class-ref in MessageUIAppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

实际上这个框架在ios 3中运行良好,但是一旦我更改了基础sdk 5.0, 它给了我一个错误。 MessageWebLayer是头文件的名称。

*** EDIT1 * **

当我在示例项目中包含私有框架时,它适用于iOS 3.2和iOS 5.0。 但是我的现有项目仍然出现错误。


但是,如果有人有一些线索,我找到了一个链接。 Nice answer but could not get it

**** EDIT2 * * 在列表中第一个回答状态为您的项目找到正确的构建?但怎么样? 如果我正在某处看它,那就是/Users/company/Library/Developer/Xcode/DerivedData/MyappUI-azodwyjwfonowicennduyclhdest/Build/Products/Debug-iphonesimulator/MyappUI.app/MyappUI normal i386

最后他们写了i386是什么意思?

它与我的构建有任何联系吗?

2 个答案:

答案 0 :(得分:2)

“找不到架构i386的符号”位表示lib没有二进制文件与mac中的intel处理器兼容(可能是你试图在模拟器上运行)。它们很可能是为用于iOS设备的ARMv6 / ARMv7处理器架构而构建的。您需要为i386架构找到正确的构建,并根据您运行的平台提供条件链接。或者只是在设备上运行它。

答案 1 :(得分:1)

有可能不再包含此框架或更改其路径或名称。由于它是私有的,没有人应该使用它,因为它不会在AppStore中获得批准。私有框架也没有公共文档,必须不惜一切代价避免,因为Apple不会给予任何支持,并且可能会根据需要进行更改,这可能是这里的情况。

你想要达到什么目的?是不是有办法使用私有API? 发布一些代码,也许我们可以为您提供更多帮助。