一、瞎想
坐在地鐵上閑來無聊,突然想到了二維碼,順手就百度了下相關的資料,目前C++二維碼相關的庫不多,也就zbar(開源中國上下了半天也沒下載下來)、zxing,不過這兩個庫據說都是解析二維碼的,不能生成二維碼,這個是對於C++而言,如果你是搞C#或者java的,那么恭喜你,你可以直接使用zxing庫來完成生成和解析二維碼,具體參看
- C++生成二維碼總結,這篇文章主要是總結了下當前二維碼相關的第三方庫,個人覺着不錯。QZXing是基於qt將zxing進行了封裝
- zxing實現二維碼生成和解析,java實現方式
二、二維碼生成工具
這里我給大家介紹一個二維碼生成工具,效果如圖1所示,從圖中就可以看出二維碼的工具名稱。
圖1 二維碼展示
關於二維碼中間的圖片,其實是貼上去的,因為二維碼有容錯能力,因此添加一張小的圖片不影響解析效果。如圖2所示,從安裝文件來看這個開源的工具其實也是使用了zxing庫來生產和解析二維碼,這個和文章前面的描述有出入。具體zxing到底能否生產二維碼個人沒有經過驗證,本片文章旨在講述各個庫的編譯過程,因此對這個問題不做結論
圖2 安裝文件列表
三、QZXing編譯
QZXing是基於qt將zxing進行了封裝,那么此小節我就直接講述QZXing的編譯過程。
- 首先從SourceForge.net上下載QZXZing源碼,並解壓
- 使用qmake命令將pro文件轉化為sln(1、qmake QZXing.pro 2、qmake -tp v -r)
- 使用vs打開sln文件進行編譯,最終生成相關的dll、lib和pdb文件,如圖3所示,我只展示了release下生成的文件
圖3 QZXing編譯結果
四、qrencode-3.1.0編譯
C++下基於qrencode可以進行生成二維碼,我是參考了幾篇文章進行編譯,文章列表如下:
上述兩篇文章都是講述的自建vs工程來編譯qrencode源碼,但是細節有所差別,其中主要是qrenc.c文件是否添加到工程,如下編譯步驟是我按照這兩篇文章的理解所實踐出來的編譯步驟
編譯步驟:
- 從github上下載qrencode源碼並解壓
- 新建win32工程,並設置工程為lib庫,不使用預編譯頭文件
- 把qrencode直接目錄下的所有.h和.c(除過qrenc.c)文件添加到該工程,其中將config.h.in改為config.h,並修改rscode.c源碼,modnn函數去掉inline關鍵字
- 修改qrspec.c文件,將strdup替換為_strdup,這是兩兩篇文章中都沒有提到的,我是根據錯誤提示找到了解決辦法,參看The posix name for this item is deprecated in VC++ 2008
- 編譯結果如圖4所示
圖4 qrencode編譯結果
五、ZBar Code
這個庫可以上SourceForge.net直接下載,包含dll和lib文件,我下載后的解壓文件如圖5
圖5 zbar庫
六、使用
這幾個庫的使用都比較簡單,我在這里就給出幾個個人覺得靠譜的使用鏈接
-
libqr--簡單好用的c++二維碼生成庫 :libqr使用
- 使用QZXing識別圖片二維碼 :QZXing使用
-
QR code二維碼簡介及Qrencode庫的移植與使用 :qrendcode使用
七、相關鏈接
注:關於使用后續有時間我會補充一個小示例