Iphone Zxing: код сканирования QR-кода не работает в сборке выпуска - PullRequest
0 голосов
/ 20 марта 2012

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

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

Он просто перестает сканировать 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


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

1 Ответ

0 голосов
/ 20 марта 2012

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

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

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

...