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工程。

image

2. 打开cmake ui,点击“Browse Source…”按钮选择 zxing-cpp 源码路径。点击“Browse Build…”按钮选择 build 文件夹。

image

3.点击 Configure按钮,在新窗口中选择Visual Studio 15 2017和x64平台(按需选择)。

image

4. 点击Finish完成配置。

image

5. 点击Generate按钮完成项目生成。

image

项目编译:

1. 在build文件夹中打开vs项目。

image

2.修改解决方案配置为Release,点击本地Windows 调试器编译项目。

image

3. 编译报错:错误    C2327    “ZXing::DecodeHints::_flags”: 不是类型名称、静态或枚举数 ,查看错误是DecodeHints.h的170 行静态断言导致。

image

解决方法:

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.编译成功

imageimage

posted @ 2020-03-22 14:46  瓦坎达_振金_华夏总代  阅读(1306)  评论(1编辑  收藏  举报