Что я пытаюсь сделать
Интеграция Zxing, рамки для чтения QR-кода, в моем iPhone-проекте. Я проверил ZXing sdk из здесь. Я запускал примерный проект с ZXing под названием ScanTest без каких-либо проблем. Но когда я пытаюсь интегрировать библиотеку с моим проектом, я получаю сообщение об ошибке.
Спецификация проекта
- Целевая ОС: iOS 6.0
- Цель развертывания: iOS 5.0 или выше.
- Протестировано на: iPhone 4 и iPhone 3GS.
- XCode: Xcode 4.5.1
- версия ZXing: 2.0
Проблема
Когда я создаю, после выполнения каждого шага интеграции в файл чтения ZXing, я получаю ошибки сборки, например
Undefined symbols for architecture armv7:
"std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
zxing::qrcode::Detector::computeDimension(zxing::Ref<zxing::ResultPoint>, zxing::Ref<zxing::ResultPoint>, zxing::Ref<zxing::ResultPoint>, float) in libZXingWidget.a(Detector-B8B28E953F840D47.o)
Undefined symbols for architecture armv7:
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from:
zxing::Exception::Exception(char const*) in libZXingWidget.a(Exception.o)
zxing::common::StringUtils::guessEncoding(unsigned char*, int, std::map<unsigned int, std::string, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::string> > >
Есть 27 таких ошибок.. Я только скопировал первые два.
Что я узнал
Хорошо, я прошел этот, этот, это, this, this, этот, этот поток в stackoverflow, все с тем же сообщением об ошибке. Ни один из решений не работал у меня.
Затем я нашел этот закрытый поток на форумах ZXing, обсуждая ту же проблему. Из этого обсуждения некоторые возможные решения (работают для некоторых)
Первая ошибка (вероятно), потому что вы не переименовали main.m в main.mm. Вторая ошибка (вероятно), потому что вы не связываете против библиотеки виджета
Я также переименовал мой main.m, перекрестный проверил, добавил ли я библиотеку только для того, чтобы найти, что я точно знал. Так что это не так.
После того, как я изменил Архитектуры библиотеки "Стандарт (armv7, armv7s)", чтобы соответствовать моим Основной проект Я смог успешно скомпилировать приложение.
Архитектура моего проекта, цели, библиотеки (для отладки, распространения, выпуска) представлена как Standard (armv7, armv7s)
. Так и не повезло.
Затем они закрыли вопрос об этом,
Проекты zxing были обновлены, чтобы добавить арку armv7s и удалить арку armv6. Эти изменения необходимы (1) для создания iPhone 5, который является armv7s и (2) полностью создан, поскольку Xcode 4.5 делает не включать поддержку armv6. Если у вас есть собственные файлы проектов, вам нужно будет внести эти изменения самостоятельно. Это общие изменения не относится к zxing, поэтому, если у вас есть проблемы, вы более/быстрая помощь на общем форуме, таком как StackOverflow.
Итак, вот я, в StackOverflow.
Еще одна точка
В интеграцию ZXing файл README первый шаг в интеграции -
1) Найдите файл ZXingWidget.xcodeproj в разделе "
zxing/iphone/ZXingWidget/
". Перетащите ZXingWidget.xcodeproj и отпустите его. в корневой панели вашего проекта Xcode "Группы и файлы". появится диалоговое окно - убедитесь, что флажок "Копировать элементы" не установлен и "Тип ссылки" означает "Относительно проекта" перед нажатием "Добавить". Кроме того, вы можете щелкнуть правой кнопкой мыши по навигатору проекта и выбрать 'Добавить файлы в "MyProject" '.
Когда я перетащил файл ZXingWidget.xcodeproj в свой проект, диалога не было. Проект напрямую добавлен в проект, и я не смог установить свойства "копировать элементы" и "Тип ссылки". Я не знаю, что это новая функция xcode 4.5 или ошибка. Это единственный шаг, который я не мог правильно выполнить в соответствии с файлом README.
Хорошо, у вас есть вся информация, которую я имею со мной. Я пытаюсь исправить это в течение 6 часов. Любая идея?