投稿日 | : 2006/04/14(Fri) 11:50 |
投稿者 | : K.J.K. |
Eメール | : akiya@koalanet.ne.jp |
URL | : |
タイトル | : Re: VC++で作成したDLLにユーザ定義型の配列を指定したい |
もし、
> [VB側]
> Private Type ReceiveInfo
> lNumber As Long
> cReceiveData As String * 100
> End Type
>
> Private Declare Function dllReceive Lib "dllWinSock.dll" _
> (ByRef tReceiveData() As ReceiveInfo) As Long
ならば、C側では、
extern "C" int WINAPI EXPORT dllReceive(SAFEARRAY ** ppsa)
という形式である必要があります。
C側では
> typedef struct{
> int iNumber;
> char cReceiveData[100];
> } ReceiveInfo;
>
> extern "C" int WINAPI EXPORT dllReceive(ReceiveInfo *tReceiveInfo)
なのだから、
Private Type ReceiveInfo
lNumber As Long
cReceiveData(0& To 99&) As Byte
End Type
Private Declare Function dllReceive Lib "dllWinSock.dll" _
(ByRef tReceiveData As ReceiveInfo) As Long
Private Sub Command3_Click()
Dim i As Integer
Dim tReceiveData(0& To 19&) As ReceiveInfo
dllReceive tReceiveData(0&)
Text2.Text = ""
For i = 0 To UBound(tReceiveData)
If tReceiveData(i).cReceiveData <> "" Then
Text2.Text = Text2.Text & tReceiveData(i).cReceiveData & ", "
End If
Next i
End Sub
とでもするのでは。