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 联系我们: