由於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...