vc dll输出函数:
int AllocHandle(void **MyPointer)
{
Rs232Serial *P=new MyDialog();
*MyDialog= (void *)P;
if(P!=NULL)
{
return(1);
}
else
return(0);
}在delphi中这样声明:
function AllocHandle(MyPointer : MyHandle):Longint;external 'RS232DLL.dll'
其中 MyHandle = ^Pointer;
Handle : Pointer;
if (AllocHandle(@Handle)=1) then
....
结果函数返回值正确,可是指针值没有传出来,请教各位!
int AllocHandle(void **MyPointer)
{
Rs232Serial *P=new MyDialog();
*MyDialog= (void *)P;
if(P!=NULL)
{
return(1);
}
else
return(0);
}在delphi中这样声明:
function AllocHandle(MyPointer : MyHandle):Longint;external 'RS232DLL.dll'
其中 MyHandle = ^Pointer;
Handle : Pointer;
if (AllocHandle(@Handle)=1) then
....
结果函数返回值正确,可是指针值没有传出来,请教各位!
{
Rs232Serial *P=new MyDialog();
*MyDialog= (void *)P;
if(P!=NULL)
{
return(1);
}
else
return(0);
}
我观察调用应该没有问题(不知道调用约定一样不一样);
但是上面的函数中确实从来没有用过 MyPointer 呀??
不好意思,我是手工抄过来的,函数抄错了,应该是:
int AllocHandle(void **MyPointer)
{
Rs232Serial *P=new MyDialog();
*MyPointer= (void *)P;
if(P!=NULL)
{
return(1);
}
else
return(0);
}
调用应该没有问题的,我用delphi翻译了上述函数放在调用程序中直接调用,指针值返回不为空。
请各位大侠帮帮忙,再给俺出出主意吧!
function AllocHandle(MyPointer : MyHandle):Longint;stdcall;external 'RS232DLL.dll'如果不行还有 cdecl;safecall 等换着试一下。