请大家帮忙出主意,关于VB调用VC写的DLL

Mr_Ldh 2003-01-06 09:37:39
我是VC的程序员,想用VC编写一个DLL,这个DLL会向VB程序传出一批数据。我定义了一个结构,DLL函数返回一个指向该结构的指针。注意这个结构一共有四个参数,两个指针分别指向两种结构数组,还有两个整形参数表示这两个结构数组的大小。
我想知道这样处理VB程序能不能接受,是不是很麻烦,有没有更好的办法?
...全文
36 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_Ldh 2003-01-07
  • 打赏
  • 举报
回复
不过VC传出来的数据量可能比较大,简单的参数如何应付?
holydiablo 2003-01-07
  • 打赏
  • 举报
回复
一个很安全的原则,给VB最简单的参数类型,不牵涉内存操作
Mr_Ldh 2003-01-07
  • 打赏
  • 举报
回复
其实我还有一个释放QInfo()分配的内存的函数:QFree(pQReturn pQret){...},VB程序可以调用它释放内存。
zyl910 2003-01-07
  • 打赏
  • 举报
回复
将数据作为参数
函数返回值表示函数执行的成功与否

如:
BOOL _stdcall QInfo(char * filename, pQReturn pQrtn);
redwrite 2003-01-06
  • 打赏
  • 举报
回复
学习
zyl910 2003-01-06
  • 打赏
  • 举报
回复
或者会造成成内存遗漏
zyl910 2003-01-06
  • 打赏
  • 举报
回复
最好不要返回指针
函数调用结束后
内部数据所占内存会被回收
指针指向的数据不可知


建议你去看看这本书:
http://www.china3y.com/soft/book/c++jc.zip
高质量C++编程指南
Mr_Ldh 2003-01-06
  • 打赏
  • 举报
回复
这是返回值的结构定义:
typedef struct type_QReturn {
int BlkCount;
pQ_BlkInfo pBlkInfo;
int LyrCount;
pQ_LyrInfo pLyrInfo;
} QReturn,*pQReturn;

这是pQ_BlkInfo的定义:
typedef struct type_Q_BlkInfo {
char Name[256];
double X;
double Y;
short Rows;
short Cols;
} Q_BlkInfo, *pQ_BlkInfo;

这是Q_LyrInfo的定义:
typedef struct t_LyrInfo {
char Name[512];
char Flag;
short Color;
BOOL IsLocked;
} Q_LyrInfo,*pQ_LyrInfo;

函数定义:
pQReturn _stdcall QInfo ( char * filename)
{
pQReturn pQret;
int nCount;

... ...

pQret = new QReturn[nCount];

...

return pQret;
}

谢谢了!
Sean918 2003-01-06
  • 打赏
  • 举报
回复
对,先把函数原型贴出来看看
zyl910 2003-01-06
  • 打赏
  • 举报
回复
贴出函数原型
zyl910 2003-01-06
  • 打赏
  • 举报
回复
函数原型

同时函数是不是__stdcall协议的?
VB只能调用__stdcall协议的

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧