C++動態鏈接庫dll及靜態鏈接庫lib製作及使用教程

現需將C++函數封裝成動態鏈接庫dll,網上看了好多博客教程,說的都不夠全面,現提供一個很有用的視頻,親測有效,啓發很大,附上鍊接:

視頻網址
下面自己根據視頻記錄下製作動態鏈接庫dll過程,防止忘記也給大家提供參考,靜態鏈接庫用的比較少,暫不記錄。
**1.**vs2013-新建項目-win32控制檯應用程序(自定義命名,示例程序命名structdllTest)-空項目,如圖1,點擊完成
圖1
**2.**解決方案右擊-添加-新建項目-win32控制檯應用程序(自定義命名)-選dll和導出符號,如圖2所示,
圖2
**3.**按照1.2操作,已建成兩個項目,如圖3所示,其中structdll自動生成了一些示例,
圖3
打開structdll.h,編寫自己的變量和函數聲明,本例中聲明如圖4所示,
圖4
接下來在相應的.cpp中初始化變量,及定義函數,如圖5所示,
圖5
.h和.cpp編寫完成後,右鍵structdll項目-生成,生成dll,然後在structdllTest工程文件夾下的debug下就出現了structdll.dll和structdll.lib文件,dll生成成功!如圖6所示,
圖6
**4.**dll製作成功後開始進行驗證,即在1中建立的structdllTest項目中進行
右鍵structdllTest項目中源文件文件夾-添加-新建項-.cpp文件(本例命名爲dllTest),如圖7所示
圖7
**5.**右鍵解決方案-屬性-項目依賴項,進行項目依賴項設置,如圖8所示,
圖8
在.cpp中輸入如下代碼,進行動態鏈接庫dll的驗證,代碼及結果如圖9所示
圖9
注意:
(1)結構體初始化問題,要在.cpp中使用{}對結構體進行初始化,試了其他的初始化方式,都出現錯誤,不知道是不是自己試的有問題,大家如果有更好的方法歡迎推薦;
(2)函數聲明中有參數項是默認常數項,要麼在聲明中寫出常數項,要麼在定義時寫出,只能初始化一次,如VOLMEAMAINDLL1_API Mat thinImage(const cv::Mat & src, const int maxIterations=-1);
其中,maxIterations的值若在聲明中給出,定義時無需再賦一次值,否則生成dll過程中會出錯。
(3)使用指針時,記得初始化,動態指針要防止越界,用完後注意釋放!


如需將C++製作的dll供C,C#調用,請參考本人的另一篇博客:
參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章