環境安裝:git
1. 安裝cmake:https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-win64-x64.msi,我下的是今天的最新版本。github
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++的桌面開發」支持。ui
項目生成:spa
1. 解壓zxing-cpp壓縮包,建立build文件夾用於儲存編譯後生成的vs工程。3d
2. 打開cmake ui,點擊「Browse Source…」按鈕選擇 zxing-cpp 源碼路徑。點擊「Browse Build…」按鈕選擇 build 文件夾。調試
3.點擊 Configure按鈕,在新窗口中選擇Visual Studio 15 2017和x64平臺(按需選擇)。code
4. 點擊Finish完成配置。orm
5. 點擊Generate按鈕完成項目生成。blog
項目編譯:
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.編譯成功