本人最近要用DELPHI写一个用调用VC写的DLL,其中有个函数接口,需要传入一个窗口句柄HWDN,本人在DELPHI中传了一个Form1.Handle但是会出错
DLL中的函数原形:extern "C" __declspec(dllexport) bool StartCom(HWND handle);在DELPHI中调用声明:function StartCom(hwnd:THandle):boolean;stdcall;far;external; 'wireless.dll' name'StartCom';调用StartCom(Form1.Handle)这里出错了,但是如果我继续运行,那么我传过去的句柄好像起了作用,也就是在之后的操作中发送过来的消息都可以接收到(都是通这个句柄给DLL发消息的)请问这是为什么?

解决方案 »

  1.   

    在DELPHI中调用声明:function StartCom(hwnd:THandle):boolean;stdcall;far;external; 'wireless.dll' name'StartCom'; stdcall改成cdecl
      

  2.   

    谢谢,skylkj,请这有什么区别吗?因为本人没写过D程序,所以不太熟悉
      

  3.   

    参数压栈约定不同.c和c++默认是cdecl参考百度
    http://www.baidu.com/s?tn=gosurfbrowserdg&ie=gb2312&bs=stdcall&sr=&z=&cl=3&f=8&wd=stdcall+cdecl&ct=0