2012-03-20 64 views
0

我已经整合了Zxing在我的Iphone项目中扫描QR码的源代码。Iphone Zxing:QR码扫描码不起作用发布版本

直到我在调试模式下构建Zxing的项目,它完美扫描QR码,但在发布模式下,应用程序无法扫描QR码中的QR码。

它只是停止扫描QR码没有任何错误/例外。当我们恢复我们的构建在调试模式,然后再次完美扫描。

我建斑马线的项目在释放模式与下面提到的设置:

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

想到两件事情:a)调试/发布模式下的不同编译配置b)您在调试/发布模式下以不同的方式处理扫描结果。您是否在编译时使用任何预处理器宏来区分不同的版本? – 2012-03-20 10:23:10

+0

编译配置对于调试和发布模式是相同的。我在任何一种模式下处理结果都是一样的。另外,我没有使用任何预处理器宏。 – Khushboo 2012-03-20 10:29:35

+0

这真的很奇怪。我现在不在我的Mac上。但是我有一个在App Store上使用ZXing实现的应用程序。如果你没有得到任何答案,我会尽快检查编译设置。 – 2012-03-20 10:33:00

回答

0

ZXing FAQ提到如果由于llvm中的错误而使用llvm(llvm-gcc或clang),则发布版本在4.2之前的Xcode中不起作用。经验证,llvm-gcc和clang都可以在Xcode 4.2及更高版本的Release模式下工作,至少可以使用ScanTestBarcodes。我仍然看到C++和Xcode 4.2叮当的bug,但它们似乎并没有影响ZXing,至少与ScanTestBarcodes一样。

您提及的DEBUG符号的行为在ScanTestBarcodes上不可重复。这些项目都没有定义DEBUG。由于定义DEBUG编译更多的调试代码,您可能仍然看到一个优化错误。

你没有提到你正在建造的建筑(armv6armv7)。据报道,如果您不关闭Thumb模式,则armv6优化问题。 ZXing svn的项目是这样做的。这个变化还没有出现在ZXing的任何版本中。

+0

ScanTest示例和我们的项目的项目设置是相同的,唯一的区别是在预编译器宏“DEBUG”中。它已经在默认情况下在我的项目中设置为调试模式,当我为释放设置它时,它开始工作。感谢您的解释,但是我昨天得到了代码。 – Khushboo 2012-03-21 05:45:52