作者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