$bcb/bin目錄中有個implib.exe
把你的vc.dll和implib.exe複製到c盤根目錄下
運行cmd
進入c盤根目錄執行
c:\implib -a cb.lib vc.dll
會生成cb.lib,將生成出的文件添加進入工程,而後再將對應的.h添加進入工程,將dll複製到項目路徑下便可。函數
--------------------------------------------------------------------------------------------------------
VC++的.lib有兩種:一種是靜態DLL,其中包括函數的實際代碼,一種是有DLL生成的.lib,其中並不包含代碼,只是包含DLL的連接信息。對 於後一種比較簡單,只須要使用C++ Builder中的命令行工具implib直接對DLL進行進行轉換就能夠了,沒必要理會VC++的.lib文件。但 是前一種就很麻煩了,由於VC++和BCB的.lib格式差異很大,沒法直接使用或轉換。之前我也遇到過相似的問題,一個硬件廠商只提供了VC++的庫文 件,爲了在BCB中使用,首先在VC++中創建一個DLL,添加若干函數,這些輸出函數供BCB調用。在這些函數中調用.lib中的函數。這樣BCB調用 DLL中的函數,DLL中的函數再調用.lib中的函數,雖然麻煩些,但能夠解決問題。
用Program Files\Borland\CBuilder6\Bin\coff2omf.exe轉換就了!
主持人注:coff2omf能夠轉換微軟的COFF格式爲Borland使用的OMF格式。可是這個工具備一些限制:轉換通常的C函數還能夠,轉換C++類有困難;這個工具在處理新版本的VC++生成的庫時可能有問題。
另外,能夠參考 「Using Visual C++ DLLs in a C++Builder Project」http://www.bcbdev.com /articles/vcdll.htm和http://www.bcbdev.com/articles/vcdll2.htm
聽說VC的lib文件跟BCB不通用
不過你也不用急啊,有dll文件能夠自已生成lib文件滴
implib filename.lib filename.dll
就能夠生成一個lib
若是你有DLL的話能夠用IMPLIB從DLL中生成符合BCB要求的LIB文件。也能夠用COFF2OMF來轉換LIB文件的格式。
coff2omf a.lib b.lib
將庫文件a.lib轉換格式生成庫文件b.lib
若是他是一個dll的導出庫,你能夠用implib xxx.lib xxx.dll本身作一個lib
若是他是vc的靜態庫,能夠給coff2omf分別加幾回不一樣的參數試試:
-lib:ms
-lib:st
-lib:ca
看有沒有哪次能夠的 工具
---------------------------------------------------------------------------測試
命令行工具 TDUMP 容許你檢查 DLL 導出函數的鏈接名字。下面向 DLL 調用 TDUMP 的命令。ui
TDUMP -ee -m MYDLL.DLL > MYDLL.LST命令行
TDUMP 能報告許多關於 DLL 的信息。咱們僅對 DLL 的導出函數感興趣。-ee 命令選項指示 TDUMP 僅列出導出信息。-m 開關告訴 TDUMP 按 DLL 函數的原始格式顯示。若是沒有 -m 開關,TDUMP 將嘗試把修飾過的函數轉化爲人們易讀的格式。若是 DLL 很大的話,你應該重定向 TDUMP 的輸出到一個文件裏(經過附加的 > MYDLL.LST)。htm
TDUMP 爲源程序清單 A 和 B 的測試 DLL 輸出以下:cmd
Turbo Dump Version 5.0.16.4 Copyright (c) 1988, 1998 Borland International
Display of File DLL.DLLio
EXPORT ord:0000='CdeclFunction'
EXPORT ord:0002='UnknownFunction'
EXPORT ord:0001='_StdCallFunction@4'file
注意在 __stdcall 函數上的前綴下劃線和後綴 @4。__cdecl 和未指定調用方式的函數沒有任何修飾符。硬件
----------------------------------------------------------------------------
32位DLL的引入庫是.lib格式,64位DLL的引入庫是.a格式。64位的DLL只能在64位的程序中調用。檢查一下.a文件的路徑,確認加入到工程中了?或者用#pragma指令的話,.a文件所在的路徑包含在library path中了嗎?