1. 程式人生 > >使用Dumpbin命令確認dll的匯出函式

使用Dumpbin命令確認dll的匯出函式

首先在命令列中進入到VS的安裝目錄下,執行一個名為VCVARS32.bat的批處理程式(對於VS2013來說,該bat檔案位於\VC\bin目錄下),該檔案的作用是用來建立VC++使用的環境資訊。(注意,當在命令列介面執行VCVARS32.bat檔案後,該檔案設定的環境資訊只在當前命令列視窗生效。) 然後輸入dumpbin命令,即可列出該命令的使用方法: 

è¿éåå¾çæè¿°

那麼想要檢視一個dll提供的匯出函式,在Dll1.dll檔案所在目錄下,在命令列中輸入下述命令:

dumpbin -exports Dll1.dll

在上圖中可以看到我們匯出了兩個函式,但是匯出函式的名稱長得很奇怪,add匯出函式的名稱是“

[email protected]@[email protected]”,subtract匯出函式的名稱是“?[email protected]@[email protected]”。這是因為在編譯連結時,C++會按照自己的規則篡改函式的名稱,這一過程稱為“名字改編”。這會導致不同的編譯器、不同的語言下呼叫dll發生問題。因此我們希望動態連結庫檔案在編譯時,匯出函式的名稱不要發生變化。 
為了實現這一目的,可以再定義匯出函式時加上限定符:extern “C”,如

extern "C" __declspec(dllexport) int add(int a, int b){
//...
}

è¿éåå¾çæè¿°

但是這種方式只能解決C++和C語言之間相互呼叫時函式命名的問題。為了徹底解決這個問題,可以通過模組定義(.def)檔案實現。

--------------------- 
作者:Elaine_Bao 

來源:CSDN 

原文內容:C++程式設計筆記:dll的生成與使用
原文:https://blog.csdn.net/elaine_bao/article/details/51784864 
版權宣告:本文為博主原創文章,轉載請附上博文連結!