coff2omf vc.lib bc.libc++
implib -f xxx.lib xxx.dll
dll文件爲VC編譯的動態庫
lib文件爲你須要轉換的c++ builder 使用的靜態庫。
這也是c++ builder自帶的轉換工具,控制檯裏面可輸入implib -h查看命令使用幫助。編輯器
很遺憾,因爲MS和Borland(CodeGear)兩家的編輯器實現細節不一樣,形成了它們生成的DLL不能相互通用,所以給實際帶來了不少的麻煩。下面來講一說如何解決這個問題。
1、VC生成DLL,C++Builder調用。 一、用extern "C"修飾VC導出的DLL函數。如:extern "C" __declspec(dllexport) int aFunc(int a);
二、用C++Builder的implib工具生成DLL對應的lib文件。如:implib -a xxx.lib xxx.dll(注意,implib必定要帶-a開關)。生成lib文件以後,C++Builder即可以使用這個lib文件了。
2、C++Builder生成DLL,VC調用。 一、用extern "C"修飾C++Builder導出的DLL函數。如:extern "C" __declspec(dllexport) int aFunc(int a);
二、用C++Builder的impdef工具生成DLL對應的def文件。如:impdef xxx.def xxx.dll。
三、用記事本打開xxx.def文件,刪去每一個函數名前的"_"。如原來的def文件爲:函數
那麼刪除後就變成了:工具
四、用VC的LIB工具,根據上面的def文件生成lib文件。如:LIB /DEF:XXX.def。生成lib文件以後,VC即可以使用這個lib文件了。
綜上說來,兩種工具開發的DLL在相互使用的時候,主要的問題即是lib庫的問題,能把這一問題解決好行了。ui