bcb6 能不能調用 vc6 編寫的dll 里面導出的類?請高手進
我調用類的成員方法,link錯誤
我知道這是必然要發生的,但是vc的命名和bcb不一樣
extern "C"對於 __declspec(dllexport) class POP {}; 是不起作用的,
因為是類,有沒有什么辦法解決?
我用了def文件定義 IMPORTS newname = mydll.34 ;
成員函數的序號是34,但是這對於普通的dllexport函數管用,
對於類成員仍然不管用
有沒有辦法能夠訪問那個vc6寫的類??
我手上只有一個h文件和一個dll文件
我已經用implib生成lib文件了
誰能告訴我怎么辦?
13 个解决方案
我也想知道,有代碼的話,你發EM:jx_wbo@hotmail.com是。謝謝
http://expert.csdn.net/Expert/topic/2260/2260125.xml?temp=.6450312
http://search.csdn.net/expert/topic/55/5501/2002/11/28/1211842.htm
http://search.csdn.net/expert/topic/55/5501/2002/10/2/1069548.htm
http://search.csdn.net/expert/topic/55/5501/2002/12/4/1229054.htm
我還是建議你使用 VC 重新封裝導出你要的函數使用比較快
to zihan(子寒)
感謝你給的連接,但是沒有找到我要的答案。
尤其是第一個http://expert.csdn.net/Expert/topic/2260/2260125.xml?temp=.6450312
你誤會了,我要的是bcb對vc的導出的類的處理,請注意是類不是函數:)
extern "C" 或動態調用 loadlibrary 等等對於類是解決不了問題的。
to Behard(我愛天安門)
這是我目前能想到唯一的辦法,頭疼啊,難道沒有干凈利落的解決辦法嗎?
3天后還沒有合適的答案,Behard分是你的了,其實對於這個問題我並沒有報多少希望:(
http://expert.csdn.net/Expert/topic/2260/2260125.xml?temp=.6450312
回帖者無解,給出了導出函數的處理方式,而不是類
http://search.csdn.net/expert/topic/55/5501/2002/11/28/1211842.htm
沒有答案
http://search.csdn.net/expert/topic/55/5501/2002/10/2/1069548.htm
沒有答案
http://search.csdn.net/expert/topic/55/5501/2002/12/4/1229054.htm
有答案,但是僅適用於vc對vc bcb對bcb這種情況
我要的是bcb對vc 這里有一個命名規則不同的問題
To 樓主,我覺得通過修改 VC 中的 def 文件可能可以實現你的目的
但是我對 VC 不是很熟悉,同時你的問題是沒有代碼的
由於 BCB 中的 def 文件不支持 ?等符合,所以不能使用 def 的方式連接
bcb 支持 def文件 而且支持得很好
你說的方法我早已嘗試過
我們可以通過函數的index序號在def文件重命名來解決
比如??fjwewEwEW@ljalf@zx這個函數序號是34
那么可以定義
Project.def的內容是
IMPORTS
NewFunctionName = DllFileName.34
這個方法對於一般的
ResultType __declspec(dllexport) Function (...)
是有作用的
但是對於類不起作用
至於修改vc的def的確可以解決,可以把類的成員函數當作一個標准函數導出
Library Mydll
EXPORTS
NewFunctionName = ??fjwewEwEW@ljalf@zx @34 ; ??fjwewEwEW@ljalf@zx
問題是我現在只有一個dll和一個h 我沒法重新編譯那個dll,我沒代碼
所以我最多只能設計bcb的IMPORTS的def文件
據我所知,VC中導出的類,只能在VC中用;要能讓VC中導出的Dll用於BCB,恐怕只有導出C風格函數這一條途徑。
to davidhopper(疏影橫斜):
extern "C" 不能作用於類 :)
我沒說extern "C"可以用於類啊。
在VC中,你可以這樣導出C++類,但它只能用於VC。
#define DllExport __declspec( dllexport )
class DllExport ClassName
{
public:
virtual int func( void );
private:
int i;
};
to davidhopper(疏影橫斜) :
沒錯,就是這樣的導出的類,但是vc和bcb命名方式不同
你可以試試看這樣的dll用vc編譯完以后用bcb如何調用?
請您親自測試一下以后再給答案,不要急於回答,謝謝。
"我沒說extern "C"可以用於類啊。
在VC中,你可以這樣導出C++類,但它只能用於VC。"
順便提醒您,這種寫法在BCB一樣可以通過,只不過BCB寫的dll只能用於BCB,VC寫的只能用於VC。可能您用BCB的時間不長,或沒有用BCB寫過能夠導出類的dll :)