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 :)