C Builder及VC的DLL相互呼叫解決方案

2021-09-20 06:31:14 字數 1342 閱讀 7255

由於ms和borland(codegear)兩家的編輯器實現細節不同,造成了它們生成的dll不能相互通用,因此給實際帶來了很多的麻煩。下面來說一說如何解決這個問題。

1、用extern "c"修飾vc匯出的dll函式。如:extern "c" __declspec(dllexport) int afunc(int a); 

2、用c++builder的implib工具生成dll對應的lib檔案。如:implib -a ***.lib ***.dll(注意,implib一定要帶-a開關)。生成lib檔案之後,c++builder便可以使用這個lib檔案了。 

1、用extern "c"修飾c++builder匯出的dll函式。如:extern "c" __declspec(dllexport) int afunc(int a); 

2、用c++builder的impdef工具生成dll對應的def檔案。如:impdef ***.def ***.dll。 

說明: 1

)impdef.exe是c++builder自帶的工具,在安裝目錄可以找到它; 2

)將impdef.exe單獨拷貝到乙個資料夾,拷貝待轉換的dll檔案到這個目錄; 3

)在這個目錄下,新建乙個bat檔案,輸入 impdef ***.def ***.dll(***為待轉換檔名) 3

、用記事本開啟***.def檔案,刪去每個函式名前的"_"。如原來的def檔案為: 

c/c++ code

library     ***.dll

exports

___cppdebughook                @2   ; ___cppdebughook

_afunc                         @1   ; _afunc

那麼刪除後就變成了: 

c/c++ code

library     ***.dll

exports

__cppdebughook                @2   ; ___cppdebughook

afunc                         @1   ; _afunc

4、用vc的lib工具,根據上面的def檔案生成lib檔案。如:lib /def:***.def。生成lib檔案之後,vc便可以使用這個lib檔案了。 

說明: 1

)lib.exe是vc自帶的,在vc安裝目錄下; 2

)將lib.exe拷貝到第2步的那個目錄下; 3

)再次新建乙個bat檔案,輸入 lib /def:***.def,就會在當前目錄下生成vc中使用的lib檔案.

綜上說來,兩種工具開發的dll在相互使用的時候,主要的問題便是lib庫的問題,能把這一問題解決好行了。

C builder 呼叫VC 封裝的dll元件

c builder呼叫自己寫的元件或者vc寫的dll,還是很方便的,但是過程中會有很多細節問題,我很負責人的想罵網上那些不不負責任,寫出方法,直接貼上別人方法的,不整理的,亂講的,都有問題的童鞋們。你們真是作風不嚴謹,寫 不認真。給別人製造難度就是給自己製造難度。1.c builder靜態呼叫vc的...

C Builder建立及呼叫DLL

動態鏈結庫 dll 是windows程式設計常遇到的程式設計方法,下面我就介紹一下在 bcb c builder下簡稱bcb 中如何建立使用dll和一些技巧。一 建立 使用bcb file new建立乙個新的dll工程,並儲存好檔案bcb,生成乙個dll 的程式框架。1 dllentrypoint函...

VC中DLL的建立及呼叫方法

dll的建立 首先,用vc整合開發介面中的 新建 新建乙個專案。無論是vc6.0還是vc.net,都有建立dll專案的選項。只不過有些稍有不同,例如vc.net中就有isapi dll,擴充套件儲存過程dll等,這些都不在討論的範圍。例如我們建立了乙個用靜態連線mfc庫的dll專案,名稱為mydll...