有一段vc程序做成了DLL.我想把里面处理完毕的结果返回到vb里面,(处理完的结果存储在结构体里)。我返回结构体指针,可是在vb里调不出来。总显示约定错误,是怎么回事?我只是临时用一下这些语言编程。所以很多地方都不会。希望大家能够帮忙。谢谢!下面是代码:
vc程序:
#include <windows.h>
#include<iostream.h>
struct mfs
{
long int fset;
int mcw[5];
}
extern "C"_declspec(dllexport) struct mfs *_stdcall GetDataPoint(); int struct mfs *_stdcall GetDataPoint()
{
struct mfs mf;
struct mfs *m;
mf.mcw[0]=1;
mf.mcw[1]=2;
mf.mcw[2]=3;
mf.mcw[3]=4;
mf.mcw[4]=5;
mf.fset =10;
m=&mf;
return (m );
}
vb里面:
Option Explicit
Private Declare Function GetDataPoint Lib "MyDLL.dll" () As mfsPrivate Sub Command1_Click()
Dim mf As mfs
mf= GetDataPoint()
Text3.Text = mf.fset
End Sub其中的mfs定义在模块中:
Type mfs
mcw(5) As Long
fset As Long
End Type
vc程序:
#include <windows.h>
#include<iostream.h>
struct mfs
{
long int fset;
int mcw[5];
}
extern "C"_declspec(dllexport) struct mfs *_stdcall GetDataPoint(); int struct mfs *_stdcall GetDataPoint()
{
struct mfs mf;
struct mfs *m;
mf.mcw[0]=1;
mf.mcw[1]=2;
mf.mcw[2]=3;
mf.mcw[3]=4;
mf.mcw[4]=5;
mf.fset =10;
m=&mf;
return (m );
}
vb里面:
Option Explicit
Private Declare Function GetDataPoint Lib "MyDLL.dll" () As mfsPrivate Sub Command1_Click()
Dim mf As mfs
mf= GetDataPoint()
Text3.Text = mf.fset
End Sub其中的mfs定义在模块中:
Type mfs
mcw(5) As Long
fset As Long
End Type
copymemory mf,getdatapoin(),len(mf)
vb里面:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function GetDataPoint Lib "MyDLL.dll" () As longPrivate Sub Command1_Click()
Dim mf As mfs
CopyMemory mf,GetDataPoint(),Len(mf)
Text2.Text=mf.fset
End Sub