首 页 | 网页模板 | 教程 | 源码下载 | 书籍下载 | 图片素材 | 字体 | JAVA特效 | FLASH源码 | 软件 | 矢量 | 论坛 | 其它 |
设为主页
加入收藏
联系站长
平面设计 | 网页制作 | 程序编写 | 数 据 库 | 媒体动画 | 网络冲浪 | 服务器相关 |
当前在线
广告:P4服务器电信机房6999/年即送产权 | 疾风下载
C++写的DLL,传结构给VB用
2005-11-14 9:14:45  作者:模板天下收集整理  来源:未知 网友评论 0 条 论坛
   

由于某些情况下,我们需要用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。

共分1页  [1] 
>> 相关文章
·C++写的DLL,传结构给VB用

关于网站 | 客服中心 | 服务条款 | 友情链接 | 广告联系 | 本站历程 | 网站导航

吉ICP备05000107号