我用DELPHI写了个DLL操作并口,提供一个函数给VB,函数原型是:
function send_array(byarray:Array of Byte):Integer;
我在VB中调用如下:
声明:Declare Function send_array Lib "p_port.dll" (ByRef byarray() As Byte) As Integer调用:
control = Array(&H1B, &H40, &H1B, &H4B, 60, &H1B, &H4C, &H1B, &H54, 1, &H1C, &H2B, &H1B, &H57, 33, 0, 0, 0, 197, 0, 223, 0, &H1B, &H20, 6, &H20, &H1B, &H21, &H20)
send_array(control) (改成send_array(control())也不行)
全编译执行是报错:“类型不匹配,缺少数组或用户定义类型”
第一次用VB,不太明白,请熟悉的人指点下怎么解决。
function send_array(byarray:Array of Byte):Integer;
我在VB中调用如下:
声明:Declare Function send_array Lib "p_port.dll" (ByRef byarray() As Byte) As Integer调用:
control = Array(&H1B, &H40, &H1B, &H4B, 60, &H1B, &H4C, &H1B, &H54, 1, &H1C, &H2B, &H1B, &H57, 33, 0, 0, 0, 197, 0, 223, 0, &H1B, &H20, 6, &H20, &H1B, &H21, &H20)
send_array(control) (改成send_array(control())也不行)
全编译执行是报错:“类型不匹配,缺少数组或用户定义类型”
第一次用VB,不太明白,请熟悉的人指点下怎么解决。
解决方案 »
- vs2008 vb 如何将strsql的查询结果复制给single型变量?
- 关于窗口切换的问题
- vb中如何调用SysListView32?
- 【问】简单问题,如何在PictureBox中显示分散对齐文本?
- 紧急求教
- VB连接Oracle出错:Run-time-error'...为什么?
- 哪位知道在vb里如何屏蔽ctrl、alt、del键!
- 如何获得屏幕上某象素的颜色值
- 选择文件夹的控间是什么?请指点
- 怎样彻底的隐藏一个用户进程,不仅在任务管理器中看不见,连那些kill进程的工具也无法看到它,当然这个功能对系统安全很有用啊.很高手指教!
- vb内置的api浏览器无法找到CB_SETDROPPEDWIDTH常数的值?
- 可不可以一行一行的打印
Declare Function send_array Lib "p_port.dll" (byarray As Byte) 调用:
send_array(control(0))
谢谢,我加了stdcall,刚才去掉了,我试验下你的调用方法。
DLL中的函数没有问题,INTEGER是可以的,我动态库中还有其他的函数,都是返回INTEGER型的,没有问题。
Declare Function send_array Lib "p_port.dll" (byarray() As Any) As Long
看看还有不要用Array来制作数组,这样返回的是一个Variant类型而不是你要的Byte类型数组
我改成你的申明了,但是错误还是一样。
》》还有不要用Array来制作数组,这样返回的是一个Variant类型而不是你要的Byte类型数组
是什么意思?我的Array是参数,不是返回的数值。
这样应该是只传递一个字节的BYTE值,我要的是传递一个数组。
control = Array(&H1B, &H40, &H1B, &H4B, 60, &H1B, &H4C, &H1B, &H54, 1, &H1C, &H2B, &H1B, &H57, 33, 0, 0, 0, 197, 0, 223, 0, &H1B, &H20, 6, &H20, &H1B, &H21, &H20)
来生成control数组,而不是你DELPHI里的那个Array另外你声明再改成这样看看
Declare Function send_array Lib "p_port.dll" (byarray As Any) As Long
然后调用的时候
send_array(control(0))
谢谢supergreenbean(超级绿豆 - 世界上只有一种人不能得罪 —— 女人)的帮助