作者caspermin (caspermin)
看板Visual_Basic
标题[VB6 ] dll回传值抓不到
时间Fri Nov 19 15:30:06 2010
以下c程式做buffer用
int ReadBuffer(int Num)
{
if ( Num >= 0 && Num < 40 )
return (int)buf[Num];
else
return 0x01;
} // Func : Read Buffer
VB程式宣告为
Private Declare Function ReadBuffer Lib "xxx" (ByVal Num As Long) As Long
Private Sub Timer1_Timer()
Dim a As Long
Dim Num As Long
Dim ReadBuffer(40) As Long
a = ReadBuffer(Num)
Text1.Text = a
End Sub
c程式buffer范围内会回传为十进制的值,若不在范围内会回传为1
但当我的Timer启动後text所显示的一直是0,但无任何的错误讯息
请问有可能是甚麽原因导致没有收到c的回传值?
或是程式哪里有问题?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.241.189
1F:推 Semisphere:readbuffer被你拿去宣告成阵列 11/19 23:46
2F:→ caspermin:不好意思~不太明白您的意思?? 11/20 19:33
3F:→ caspermin:可否说明要如何修改才能读到值<(_ _)> 11/20 19:35
4F:推 Leadgen:Function name 和内部阵列的名字一样了。 11/21 11:59
5F:→ caspermin:不是依照VB呼叫dll的方式应该是要设一样的名称 11/21 14:27
6F:→ Semisphere:Dim ReadBuffer(40) As Long 这行砍掉 11/21 19:48
7F:→ Semisphere:你外面已经宣告dll的函式,就已经可以直接使用 11/21 19:48
8F:→ Semisphere:在sub里面宣告跟外面重复的函式名称,自然就被sub宣告 11/21 19:49
9F:→ Semisphere:的阵列盖掉,你a = ReadBuffer(Num)就等於从阵列取值 11/21 19:50
10F:→ caspermin:你是说程式sub ReadBuffer 11/22 21:12
11F:→ caspermin:里面 a = ReadBuffer(Num) 11/22 21:13
12F:→ caspermin:最後End结束这样吗? 11/22 21:14