运行模拟器时出错:架构i386的重复符号

时间:2012-03-13 21:22:45

标签: iphone objective-c architecture ios-simulator sharekit

我添加了ShareKit框架尝试,这是在模拟器中运行它的错误:

duplicate symbol _LFHRReadStreamClientCallBack in 
.../Xcode/DerivedData/....build/Objects-normal/i386/LFHTTPRequest-8C6F35228BA446B9.o 
and 
.../Xcode/DerivedData/....build/Objects-normal/i386/LFHTTPRequest-8ACF920D803FDCA6.o 
for architecture i386

我查看了以前的帖子Build Error - missing required architecture i386 in file,并尝试编辑project.pbxproj,注释掉FRAMEWORK_SEARCH_PATHS行,以及查找意外添加到我的项目但没有运气的.framework文件。

我还能尝试什么?

3 个答案:

答案 0 :(得分:4)

您已在项目中包含两次LFHTTPRequest。有可能另一个库(例如sharekit)包含它,双重检查文件sharekit包括并删除LFHTTPRequest的一个副本,应该编译。

答案 1 :(得分:1)

如果将coredata生成的类移动到一个组(如“Models”)中,然后重新生成NSManagedObjectModel子类,也会发生这种情况。生成的文件将放在项目根目录中,并添加到构建中两次。

答案 2 :(得分:0)

使用TessBaseAPI时遇到了同样的错误。我有两个c ++文件,两者都有以下声明:

namespace tesseract {
    class TessBaseAPI;
};

tesseract::TessBaseAPI *tesseract1;
uint32_t *pixels;

我阅读了完整的错误消息。我在那里找到了一条线:

duplicate symbol _tesseract1 in

后来,哪些文件包含副本也包括在内(文件名)。 所以,我按如下方式更改了实例名称:

namespace tesseract {
    class TessBaseAPI;
};

tesseract::TessBaseAPI *tesseractNew;
uint32_t *pixelsNew;

这解决了我的问题。