is UPCA or EAN13. The old version returned an uninitialised Ref<Result> (at the EAN13 case) which let MultiFormatUPCEANReader::decodeRow (line 90) crash because a Result is assumed. The bugfix is technically oriented at the java version. Note: This error doesn't appear at normal tests because the MultiFormatUPCEANReader uses the EAN13 reader for UPC-A detection. The UPCAReader is only used if DecodeHints BarcodeFormat::UPC_A ist set.
ZXing C++ Port
ZXing is/was a Java library.
At some point a complete C++ port/rewrite was created and maintained in the official ZXing repo. However, at the time of writing the C++ port is no longer maintained and has been removed from the official ZXing repo.
This project was forked from the last ZXing commit to contain the C++ project, with the following exceptions
- scons (Python) build system has been deleted.
- Deleted black box tests, because they refer to a large test data in ZXing repo.
- Added appropriate copyright/licensing details (based on those in the ZXing repo).
- Updated README.md
Removal of build systems was done to minimise maintenance burden.
If tests and XCode projects (other than those produced automatically be CMake) are desired, then another repo should be created and this repo referenced as a submodule.
Building using CMake
CMake is a tool, that generates native makefiles and workspaces. It integrates well with a number of IDEs including Qt Creator and Visual Studio.
Usage with CLion or Qt Creator:
- Simply open
CMakeLists.txtas a new project - Additional command line arguments can be specified (see below)
Usage with Makefiles, Visual Studio, etc. (see cmake --help for a complete list of generators):
cdtocpp/build- Unix: run
cmake -G "Unix Makefiles" .. - Windows: run
cmake -G "Visual Studio 10" ..
You can switch between build modes by specifying:
-DCMAKE_BUILD_TYPE=Debugor-DCMAKE_BUILD_TYPE=Release
Development tips
To profile the code (very useful to optimize the code):
- Install Valgrind
- Run
valgrind --tool=callgrind build/zxing - path/to/test/data/*.jpg > report.html - Analyze output using KCachegrind
To run the black box tests and check for changes:
- Build
zxing-img, e.g., scons zxing - Run the tests:
bash blackboxtest.sh 2>&1 | tee bb.results - Diff them with the known results:
diff bb.results blackboxtest.results