VS開發C++Dll的一些有趣問題

acode1發表於2018-12-17

在用VS的C++開發dll的過程中,為了使暴露函式清楚明瞭,一般採用Def檔案來寫明暴露函式名稱。

Def檔案一般格式如下:

; ***.def : 宣告 DLL 的模組引數。

 

LIBRARY ***

EXPORTS

    ; 此處可以是顯式匯出

    Fun1 @1

    Fun2 @2

Fun3 @3

***一般代表dll檔名稱。首行中; ***.def,可以任意寫名稱。第三行 LIBRARY ***的名稱卻不可隨意亂寫。一定要與dll名稱相同,且不用寫dll或lib尾綴。

其實,LIBRARY後是可以寫尾綴的。在一種情況下還必須寫尾綴:那就是有“.”的情況下,如dll名稱為:ABCv2.1,如果在DEF檔案中寫成:LIBRARY “ABCv2.1”,那麼恭喜你,除錯程式時,會提示,找不到ABCv2.1檔案。微軟將“.1”當作了尾綴,這種情況有兩種解決辦法。

  1. 將DEF檔案中的第三行,改寫為LIBRARY “ABCv2.1.dll”
  2. 直接去掉LIBRARY後的庫名稱。

推薦第2種,這樣無論是D版或R版,都不用再改檔案了。不過,在有的版本編譯器中,不寫庫名稱是不能通過的,那就請使用第一種。

相關文章