環境安裝:
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.編譯成功