VC和c++ builder DLL互調用

來源:互聯網
上載者:User
常在江湖飄,少不了要和DLL打交道。有時我們需要使用C++Builder編寫一個DLL,然後拿到VC中用(比如用C++Builder寫一個表單封裝到DLL);有時又要拿VC編寫的DLL在C++Builder使用(比如拿到一個產品的開發包,這個包是一堆用VC寫的DLL)。
很遺憾,由於MS和Borland(CodeGear)兩家的編輯器實現細節不同,造成了它們產生的DLL不能相互連用,因此給實際帶來了很多的麻煩。下面來說一說如何解決這個問題。
一、VC產生DLL,C++Builder調用。
1、用extern "C"修飾VC匯出的DLL函數。如:extern "C" __declspec(dllexport) int aFunc(int a);
2、用C++Builder的implib工具產生DLL對應的lib檔案。如:implib -a xxx.lib xxx.dll(注意,implib一定要帶-a開關)。產生lib檔案之後,C++Builder便可以使用這個lib檔案了。

二、C++Builder產生DLL,VC調用。
1、用extern "C"修飾C++Builder匯出的DLL函數。如:extern "C" __declspec(dllexport) int aFunc(int a);
2、用C++Builder的impdef工具產生DLL對應的def檔案。如:impdef xxx.def xxx.dll。
3、用記事本開啟xxx.def檔案,刪去每個函數名前的"_"。如原來的def檔案為:

C/C++ code
LIBRARY     XXX.DLLEXPORTS    ___CPPdebugHook                @2   ; ___CPPdebugHook    _aFunc                         @1   ; _aFunc

那麼刪除後就變成了:

C/C++ code
LIBRARY     XXX.DLLEXPORTS    __CPPdebugHook                @2   ; ___CPPdebugHook    aFunc                         @1   ; _aFunc

4、用VC的LIB工具,根據上面的def檔案產生lib檔案。如:LIB /DEF:XXX.def。產生lib檔案之後,VC便可以使用這個lib檔案了。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.