Ошибка при запуске симулятора: дубликат символа для архитектуры i386 - PullRequest
2 голосов
/ 14 марта 2012

Я добавил фреймворк 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

Я посмотрел предыдущие посты Ошибка сборки - отсутствует необходимая архитектура i386 в файле и попыталсяредактировать project.pbxproj, комментируя строки FRAMEWORK_SEARCH_PATHS, а также искать файлы .framework, случайно добавленные в мой проект, но безуспешно.

Что еще можно попробовать?

Ответы [ 3 ]

4 голосов
/ 14 марта 2012

Вы включили LFHTTPRequest в свой проект дважды.Возможно, что другая библиотека (например, sharekit) включила его для вас, дважды проверьте файлы, которые включает sharekit, и удалите одну копию LFHTTPRequest, и все должно скомпилироваться.

1 голос
/ 15 октября 2012

Это также может произойти, если вы перемещаете сгенерированные coredata классы в группу, например «Модели», а затем заново создаете подклассы NSManagedObjectModel.Сгенерированные файлы будут помещены в корень проекта и добавлены в сборку дважды.

0 голосов
/ 17 мая 2013

Я получил ту же ошибку при работе с 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;

Это решило мою проблему.

...