在visual studio 2005中引用自定義函數庫

1) 創建靜態函數庫

 

文件--項目--visual c++--win32-- win32項目--靜態庫(取消預編譯頭)

 

編寫頭文件與源文件--編譯通過後,會在此項目工程的debug目錄下生成*(static).lib文件

 

 

2)引用靜態函數庫

 

建立好一個常規項目後,把*(static).lib文件與靜態函數庫中用到的頭文件都拖到此項目文件夾下

 

並把項目--項目屬性頁--鏈接器--輸入--附加依賴項中填入*(static).lib

 

項目--項目屬性頁--鏈接器--常規--附加庫目錄中填入要引用的*(static).lib的所在目錄

 

 

3)創建動態函數庫


文件--項目--visual c++--win32-- win32項目--動態庫(勾選上空項目)

 

編寫頭文件與源文件--編譯通過後,會在此項目工程的debug目錄下生成*(dlllib).dll文件

 

創建動態函數庫與創建靜態函數庫不同,在編寫靜態函數庫的源文件或頭文件時,按建立常規項目的編寫方式即可,但在創建動態函數庫時,

 

需要在頭文件中對每個函數的聲明加上extern "C" _declspec(dllexport),例如要聲明一個int mut(int a ,int b)的函數,應該這樣

 

聲明:extern "C" _declspec(dllexport) int mut(int a,int b);                        

 

(加上extern "C"-(C大寫)可以讓C++編寫的DLL在其他語言中也可以調用,但是使用extern "C"的缺陷是不能導出C++的類成員函數,只能導出全局函數。)


同樣在源文件中,函數定義前也應該加上 _declspec(dllexport)的聲明


如果不加以上的特殊聲明,是不會生成下面提到的*(dlllib).lib文件的。

 

 

4)引用動態函數庫

 

 

 

 

 

 

 

 

打開DOS命令窗口,用CD命令轉到*(dlllib).dll文件所在目錄(注意,CD命令是切換同一盤符下的目錄,而不能切換不同盤符,如果要從

 

C盤切換至D盤,直接輸入“D:”即可,這裏也說明LINUX與WINDOWS文件系統是不同的)。

 

將 X:/Program Files/Microsoft Visual Studio 8/VC/bin 目錄下的vcvars32.bat拖到DOS環境下,它的作用是爲使用viual studio

 

2005 x86工具設置環境。

 

輸入命令:dumpbin -exports *(dlllib).dll  (實現函數的導出)

 

顯示類似如下信息:

   ordinal   hint    RVA       name
   1     0    00011087     ?add@@YAHHH@Z = @ILT+130(?add@@YAHHH@Z)
   2     1    00011073     ?subtract@@YAHHH@Z = @ILT+110(?subtract@@YAHHH@Z)

 

之後在*(dlllib).dll文件所在目錄下,會生成一個*(dlllib).lib的文件,將這兩個文件都拷入所引用函數庫的工程文件夾下

 

並把項目--項目屬性頁--鏈接器--輸入--附加依賴項中填入*(dlllib).lib

 

項目--項目屬性頁--鏈接器--常規--附加庫目錄中填入要引用的*(dlllib).lib的所在目錄

 

 

 

至此就可以實現自定義函數庫的引用

 

 

在VC下生成靜態函數庫與在VS2005下是一樣的,在引用方面,也需要將.h .lib文件拖到calllib的工程目錄下,然後在main()下包括mylib.lib中的頭文件與#pragma comment(lib,"mylib.lib")表明使用靜態庫文件。(這裏不需將mylib的全路徑給出,因爲已經拖到了calllib的工程目錄下)也可以不加#pragma comment(lib,"mylib.lib")而在project->add to project->Files 將mylib.lib加至工程中。

 

 

 

 

發佈了26 篇原創文章 · 獲贊 8 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章