Delphi中怎样才能使用VC中的对象---- 在线给分

时间:2022-06-14 18:41:28
我有一个VC写的Dll同时也有它的运行Demo,但Dll中输出的是类对象.
Demo中的与Dll连接的.h文件我又看不懂.我现在要用Delphi调用该Dll
我该怎么办?????????

7 个解决方案

#1


如果你输出的是个类的对象,那么在delphi中调用也可以可以采用同样的方法,唯一的是数据类型要符合delphi的类型约定。可以采用记录型数组来定义
这个类。

#2


同意楼上

#3


同意楼上

#4


vc传的是mfc对象,delphi的是vcl,不行的。。。

不过可以通过 hwnd(handle) 做桥梁。。。。。

mfc control.m_hWnd ------->  handle -------->  vcl control.handle

#5


VC的DLL引出的类是不能供Delphi调用的.你可以用VC再作一个DLL来替Delphi调用:
方法一:
  用许多函数代替类,每个成员函数对应一个函数,构造函数对应一个返回值为(void*)的参数列表相同的函数,其它函数对应一个返回值相同但多一个(void*)的参数的函数.
方法二:
  在VC里写一个新的类去调用旧的类class1,所有public方法都是虚的;用上面的方法引出构造函数;在Delphi中写一个同样的类class2,所有的public方法都是抽象的(abstract);在Delphi中引入DLL中的函数(代理构造函数)时返回值为class2.得到class2的对象后直接调用就行了.

     ____     ____
     \ p \   / g /
      \ l \_/ n /
       \ a   o /
        \ i s /
         \ n /
          \_/

#6


但可以用CB调用,我现在是不能肯定能否用Delphi调用

#7


我怎样确定一个dll能否被Delphi调用

#1


如果你输出的是个类的对象,那么在delphi中调用也可以可以采用同样的方法,唯一的是数据类型要符合delphi的类型约定。可以采用记录型数组来定义
这个类。

#2


同意楼上

#3


同意楼上

#4


vc传的是mfc对象,delphi的是vcl,不行的。。。

不过可以通过 hwnd(handle) 做桥梁。。。。。

mfc control.m_hWnd ------->  handle -------->  vcl control.handle

#5


VC的DLL引出的类是不能供Delphi调用的.你可以用VC再作一个DLL来替Delphi调用:
方法一:
  用许多函数代替类,每个成员函数对应一个函数,构造函数对应一个返回值为(void*)的参数列表相同的函数,其它函数对应一个返回值相同但多一个(void*)的参数的函数.
方法二:
  在VC里写一个新的类去调用旧的类class1,所有public方法都是虚的;用上面的方法引出构造函数;在Delphi中写一个同样的类class2,所有的public方法都是抽象的(abstract);在Delphi中引入DLL中的函数(代理构造函数)时返回值为class2.得到class2的对象后直接调用就行了.

     ____     ____
     \ p \   / g /
      \ l \_/ n /
       \ a   o /
        \ i s /
         \ n /
          \_/

#6


但可以用CB调用,我现在是不能肯定能否用Delphi调用

#7


我怎样确定一个dll能否被Delphi调用