nu-book/zxing-cpp在windows7下的编译
环境安装:
1. 安装cmake:https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-win64-x64.msi,我下的是今天的最新版本。
2. 下载zxing-cpp项目项目代码:https://github.com/nu-book/zxing-cpp/releases。我下载的版本是V1.0.8.
3. Visual Studio 2017安装https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/,安装完成后在 工具-获取工具和支持 中添加“使用C++的桌面开发”支持。
项目生成:
1. 解压zxing-cpp压缩包,创建build文件夹用于储存编译后生成的vs工程。
2. 打开cmake ui,点击“Browse Source…”按钮选择 zxing-cpp 源码路径。点击“Browse Build…”按钮选择 build 文件夹。
3.点击 Configure按钮,在新窗口中选择Visual Studio 15 2017和x64平台(按需选择)。
4. 点击Finish完成配置。
5. 点击Generate按钮完成项目生成。
项目编译:
1. 在build文件夹中打开vs项目。
2.修改解决方案配置为Release,点击本地Windows 调试器编译项目。
3. 编译报错:错误 C2327 “ZXing::DecodeHints::_flags”: 不是类型名称、静态或枚举数 ,查看错误是DecodeHints.h的170 行静态断言导致。
解决方法:
3.1.注释静态断言 重新编译
enum HintFlag { TRY_HARDER = static_cast<int>(BarcodeFormat::FORMAT_COUNT) + 1, TRY_ROTATE, WITH_CODE_39_EXTENDED, ASSUME_CODE_39_CHECK_DIGIT, ASSUME_GS1, RETURN_CODABAR_START_END, FLAG_COUNT }; //static_assert(FLAG_COUNT < 8 * sizeof(_flags), "HintFlag overflow"); bool getFlag(int f) const { return (_flags & (1 << f)) != 0; }
3.2. 修改sizeof(_flags)为sizeof(uint32_t) ,重新编译。
enum HintFlag { TRY_HARDER = static_cast<int>(BarcodeFormat::FORMAT_COUNT) + 1, TRY_ROTATE, WITH_CODE_39_EXTENDED, ASSUME_CODE_39_CHECK_DIGIT, ASSUME_GS1, RETURN_CODABAR_START_END, FLAG_COUNT }; static_assert(FLAG_COUNT < 8 * sizeof(uint32_t), "HintFlag overflow"); bool getFlag(int f) const { return (_flags & (1 << f)) != 0; }
4.编译成功