Iphone Zxing: код сканирования QR-кода не работает в сборке Release

Я интегрировал исходный код Zxing для сканирования QR-кода в свой проект Iphone.

Пока я не построил проект Zxing в режиме отладки, он отлично сканирует QR-коды, но в режиме выпуска приложение не может сканировать QR-код из QR-изображения.

Он просто останавливает сканирование QR-кодов без каких-либо ошибок / исключений. Когда мы возвращаем нашу сборку в режим отладки, она снова отлично сканирует.

Я построил проект Zxing в режиме выпуска с указанными ниже настройками:

1.  XCode: 4.0.1    Compiler: GCC 4.2                   Optimization Level: -O0
2.  XCode: 4.0.1    Compiler: GCC 4.2                   Optimization Level: -Os
3.  XCode: 4.0.1    Compiler: LLVM GCC 4.2              Optimization Level: -O0
4.  XCode: 4.0.1    Compiler: LLVM GCC 4.2              Optimization Level: -Os
5.  XCode: 4.0.1    Compiler: LLVM compiler 2.0         Optimization Level: -O0
6.  XCode: 4.0.1    Compiler: LLVM compiler 2.0         Optimization Level: -Os
7.  XCode: 4.2      Compiler: LLVM GCC 4.2              Optimization Level: -O0
8.  XCode: 4.2      Compiler: LLVM GCC 4.2              Optimization Level: -Os
9.  XCode: 4.2      Compiler: Apple LLVM compiler 3.0   Optimization Level: -O0
10. XCode: 4.2      Compiler: Apple LLVM compiler 3.0   Optimization Level: -Os


Я понятия не имею, в чем проблема. Любая помощь в этом будет очень кстати. Спасибо..


person Khushboo    schedule 20.03.2012    source источник
comment
На ум приходят две вещи: а) другая конфигурация компиляции в режиме отладки / выпуска; б) вы по-разному обрабатываете результат сканирования в режиме отладки / выпуска. Используете ли вы какие-либо макросы препроцессора, чтобы различать разные версии во время компиляции?   -  person Rok Jarc    schedule 20.03.2012
comment
Конфигурации компиляции одинаковы для режима отладки и выпуска. Я отношусь к результату одинаково в любом из режимов. Кроме того, я не использую никаких макросов препроцессора.   -  person Khushboo    schedule 20.03.2012
comment
Это действительно кажется странным. Я сейчас не за своим Mac. Но у меня есть приложение с работающей реализацией ZXing в App Store. Я проверю настройки компиляции, как только смогу, если вы не получите никаких ответов.   -  person Rok Jarc    schedule 20.03.2012
comment
rokjarc, я получил ответ на этот вопрос. Я не использовал какие-либо макросы препроцессора, с другой стороны, я обнаружил, что мне нужно добавить макрос препроцессора для сборки DEBUG. Когда я добавил это, мой код работает !!!!   -  person Khushboo    schedule 20.03.2012


Ответы (1)


В часто задаваемых вопросах о ZXing упоминается, что сборки выпуска не работают с Xcode до версии 4.2, если вы используете llvm (llvm-gcc или clang) из-за ошибок в llvm. И llvm-gcc, и clang были проверены для работы в режиме Release с Xcode 4.2 и новее, по крайней мере, с ScanTest и Barcodes. Я все еще видел ошибки с C ++ и лязг с Xcode 4.2, но они, похоже, не влияют на ZXing, по крайней мере, как это видно с ScanTest и Barcodes.

Поведение в отношении упомянутого вами символа DEBUG не повторяется на ScanTest или Barcodes. Ни один из этих проектов не определяет DEBUG. Поскольку определение DEBUG компилируется в большем количестве отладочного кода, вы все еще можете видеть ошибку оптимизации.

Вы не упоминаете об архитектуре, для которой строите (armv6 или armv7). Сообщается, что есть проблемы с оптимизацией с armv6, если вы не отключите режим Thumb. Это делают проекты в svn ZXing; этого изменения пока нет ни в одном из выпусков ZXing.

person smparkes    schedule 20.03.2012
comment
Настройки проекта для примера ScanTest и нашего проекта одинаковы, разница только в макросе прекомпилятора DEBUG. Он уже был настроен для режима отладки в моем проекте по умолчанию, когда я установил его для выпуска, он начал работать. Спасибо за объяснение, но вчера я получил код, работающий. - person Khushboo; 21.03.2012