bcb6 能不能調用 vc6 編寫的dll 里面導出的類?請高手進


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 个解决方案

#1


我也想知道,有代碼的話,你發EM:jx_wbo@hotmail.com是。謝謝

#2


up

沒人知道?

#3


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

#4


我還是建議你使用 VC 重新封裝導出你要的函數使用比較快

#5


我關注!

#6


to zihan(子寒) 

感謝你給的連接,但是沒有找到我要的答案。
尤其是第一個http://expert.csdn.net/Expert/topic/2260/2260125.xml?temp=.6450312
你誤會了,我要的是bcb對vc的導出的類的處理,請注意是類不是函數:)
extern "C"   或動態調用 loadlibrary  等等對於類是解決不了問題的。

to Behard(我愛天安門)

這是我目前能想到唯一的辦法,頭疼啊,難道沒有干凈利落的解決辦法嗎?

3天后還沒有合適的答案,Behard分是你的了,其實對於這個問題我並沒有報多少希望:(

#7


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  這里有一個命名規則不同的問題

#8


To 樓主,我覺得通過修改 VC 中的 def 文件可能可以實現你的目的

但是我對 VC 不是很熟悉,同時你的問題是沒有代碼的

由於 BCB 中的 def 文件不支持 ?等符合,所以不能使用 def 的方式連接

#9


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文件

#10


據我所知,VC中導出的類,只能在VC中用;要能讓VC中導出的Dll用於BCB,恐怕只有導出C風格函數這一條途徑。

#11


to davidhopper(疏影橫斜):

extern "C" 不能作用於類 :)

#12


我沒說extern "C"可以用於類啊。
在VC中,你可以這樣導出C++類,但它只能用於VC。

#define DllExport   __declspec( dllexport )

class DllExport ClassName
{
public:
     virtual int func( void );
private:
     int i;
};

#13


to  davidhopper(疏影橫斜) :

沒錯,就是這樣的導出的類,但是vc和bcb命名方式不同

你可以試試看這樣的dll用vc編譯完以后用bcb如何調用?

請您親自測試一下以后再給答案,不要急於回答,謝謝。

"我沒說extern "C"可以用於類啊。
在VC中,你可以這樣導出C++類,但它只能用於VC。"

順便提醒您,這種寫法在BCB一樣可以通過,只不過BCB寫的dll只能用於BCB,VC寫的只能用於VC。可能您用BCB的時間不長,或沒有用BCB寫過能夠導出類的dll :)

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: