欢迎光临
我们一直在努力

C++写的DLL,传结构给VB用-.NET教程,VB.Net语言

建站超值云服务器,限时71元/月

 

由于某些情况下,我们需要用cb或是vc写一个dll,而调用它的确实vb。

这里特别强调一下使用标准数据类型的问题,就是说用c++写的东西,导出的函数最好使用标准的int,char,long,double…标准类型以及他们的指针。

很多人都强调过这个问题。但是我最近遇到一个需要vb传结构给cb做的dll,然后数据返回到结构的情况。

typedef struct xtest

{

char a[100];

char b[100];

}*px;

__declspec(dllexport) void __stdcall test  (*px,char *x,char *y);

void __stdcall test  (*px,char *x,char *y)

{

if(strlen(x)>100) *(x+99)=\0;

if(strlen(y)>100)*(y+99)=\0;

strcpy(px->a,x);

strcpy(px->b,y);

return;

}

在vb里你要写一个同样的结构

public type xtest

a as string*100

b as string*100

end type

public declare funciton test lib”你的dll名字” (byref px as xtest,byval x,byval y)

这样才可以成功,如果使用了不定长的字符串,那么很可能你的系统要崩溃,我在我这里是这样。如果有问题,请大家指正。

另外,vb声明dll里的函数,需要dll的名字放在 lib后面,但是这个名字在运行时,你必须要写全路径或是放在system32目录,即使放在vb程序所在的目录,也需要全路径。但是编译过的vb程序,可以识别放在同目录下在声明里没有写全路径的dll。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » C++写的DLL,传结构给VB用-.NET教程,VB.Net语言
分享到: 更多 (0)