VC++调用delphi写的DLL其中delphi的DLL中有个回调函数

sinat_30703685 2015-10-12 05:24:33
DLL中代码
回调原型
type
TStateCallback=procedure(iState:Integer) of object;
包含两个函数
function add(x,y :Integer) :Integer ;stdcall; //加法函数
function RegisterStateCallback(FCallback:TStateCallback) :Integer ;stdcall; //注册回调

VC++中代码如何实现调用delphi的DLL
...全文
66 1 收藏 5
写回复
5 条回复
早打大打打核战争 2015年10月12日
回复 点赞
早打大打打核战争 2015年10月12日
type
TStateCallback=procedure(iState:Integer) of object;

这个定义了一个方法指针,调用时会隐含传入一个类实例指针(第一个参数,第二个参数才是iState),你的C++程序应该没有Delphi DLL中定义的类,回调的时候怎么传?要把这个回调函数改成普通函数类型才行,否则就要DLL先把需要的实例指针先传给C++程序才行。
回复 点赞
ztenv 2015年10月12日
TStateCallback这个返回一个delphi声明的object类型,不好搞;建议用delphi先把这个封装成一个无返回值类型的函数,然后再由c++调用;

function add(x,y :Integer) :Integer ;stdcall; 这个函数试试如下:
__stdcall int add(int x,int y);
回复 点赞
sinat_30703685 2015年10月12日
就是用VC++写一个调用delphi写的DLL(DLL中包含回调函数)的主程序就好了但.简单的例子就行了
回复 点赞
珍惜生命远离CPP 2015年10月12日
返回对象? C++无法实现啊
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告