您的位置:程序门 -> vb ->



请教,vb调用vc生成的dll问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教,vb调用vc生成的dll问题
发表于:2007-07-31 09:52:02 楼主
extern   "c "   __declspec(dllexport)   __stdcall   bool       writeusb_data(int   address,int   count,unsigned   char   *pdmx1024);
我在vb中的声明如下:
public   declare   function   writeusb_data   lib   "usbdmx1024.dll "   (byval   address   as   integer,   byval   count   as   integer,   byref   pdmx1924   as   any)   as   boolean
程序:
dim   sign   as   boolean
dim   data(1   to   1024)   as   byte


for   i   =   1   to   1024
    data(i)   =   255
next   i
sign   =   writeusb_data(1,   1024,   data(1))
怎么sign没有返回值呢?大家帮我看一下啊。
发表于:2007-07-31 13:24:061楼 得分:0
只要你的连接没错,vc中返回的类型和vb定义返回类型要统一。还有字符传入好像是传地址,你的vb定义是bool型,没有定义返回值的类型
发表于:2007-07-31 14:42:512楼 得分:0
dll里面确定没问题吧?怀疑中.....

另外,声明改一下:

public   declare   function   writeusb_data   lib   "usbdmx1024.dll "   (byval   address   as   integer,   byval   count   as   integer,   byval   pdmx1924   as   long)   as   boolean

程序:
dim   sign   as   boolean
dim   data(1   to   1024)   as   byte


for   i   =   1   to   1024
    data(i)   =   255
next   i
sign   =   writeusb_data(1,   1024,   varptr(data(1)))
发表于:2007-07-31 17:09:403楼 得分:0
你的声明返回值不正确吧,vc中的bool是一个无符号长整形,如果在vb中使用boolean的话不行,使用long试试。
发表于:2007-08-01 13:53:314楼 得分:0
public   declare   function   writeusb_data   lib   "usbdmx1024.dll "   (byval   address   as   long,   byval   count   as   long,   byval   pdmx1924   as   long)   as   long

call   writeusb_data(1,1024,varptr(data(1)))

数据类型要对齐


快速检索

最新资讯
热门点击