c++ 記一次把qrencode源碼生成動態庫的嘗試

在網上搜二維碼庫:qrencode,源碼下載:https://github.com/fukuchi/libqrencode
我的是windows環境,IDE是vs2022。
建立一個動態庫的空工程。
把源碼下載下來,其中test文件夾 use文件夾 和cmake文件夾我沒有使用,直接把根目錄的所有.h和.c複製,然後在vs的項目裏粘貼。
因爲使用了png.h 頭文件,所以nuget搜索:libpng,注意看標記一欄的編譯器支持版本,v120,v140,vs2022使用的是更高版本的,所以需要visualstudio installer 修改 添加 v140或v120版本,否則貶義時會報link錯誤,比如:
”錯誤 LNK2019 無法解析的外部符號 png_create_write_struct,函數 writePNG 中引用了該符號“
因爲代碼裏用了很多windows環境下過時的方法,會報錯 c4996。
錯誤 C4996 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS
需要在項目裏設置,右鍵項目,選擇屬性,c/c++一欄 選擇高級,找到右側的特定警告,輸入4996添加。
除了這個,還需要在預編譯頭裏,不適用預編譯頭。
做了這些工作,這個項目大概率是能1成功,0error,0warnning的。
 
然後就是寫dll的接口了,再寫接口前,先了解以下這個庫,這個庫的主要對象是QRcode,
主要方法是:
QRcode *QRcode_encodeString(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive)
輸出圖片文件:static int writePNG(const QRcode *qrcode, const char *outfile, enum imageType type)
我就寫了兩個接口,一個是供c++環境使用的生成圖片的,一個是供c#使用,可以自定義二維碼圖片尺寸的。
因爲這個是庫是作者用c語言寫的,所以,導出的接口可以這樣寫:
__declspec(dllexport) int Method(int arg,const char*fileName)
重點在這裏:__declspec(dllexport)。
到這裏,就能使用這個庫了。不過我生成的二維碼的大小是固定的。自己不太瞭解這個庫的具體內容,只是簡單嘗試了以下,作爲練習,並沒有運用到工作中去。可能還有很多坑,自己沒遇見。
c++調用方如何使用這個庫,詳情:
https://www.cnblogs.com/HelloQLQ/p/16364842.html
c#調用方如何調用這個庫,詳情:
 https://www.cnblogs.com/HelloQLQ/p/16364888.html
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章