C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 27 を表示中)
■12773 / )  VB.NETからVC作成DLLの関数を使用する際の引数
□投稿者/ リバー (1回)-(2008/01/17(Thu) 13:54:18)

分類:[VB.NET/VB2005] 

2008/01/17(Thu) 14:29:39 編集(投稿者)

初めましてリバーと申します。

現在、VB.NET2003からVC++6.0作成DLLの関数を使用することに挑戦しています。

VC作成DLLの関数の引数は1:構造体のポインタ、2:LPSTRです。
構造体:
1番目の項目の型:void*
2番目の項目の型:int
3番目の項目の型:int
4番目の項目の型:構造体A
5番目の項目の型:int
6番目の項目の型:int
7番目の項目の型:int

構造体A:
1番目の項目の型:int
2番目の項目の型:int
3番目の項目の型:int
4番目の項目の型:int
5番目の項目の型:int
6番目の項目の型:int
7番目の項目の型:int
8番目の項目の型:int
9番目の項目の型:int


VB記述内容:
Public Structure 構造体
Public NoA As IntPtr
Public NoB As Integer
Public NoC As Integer
Public NoD As 構造体A
Public NoE As Integer
Public NoF As Integer
Public NoG As Integer
End Structure

Public Structure 構造体A
Public NoA As Integer
Public NoB As Integer
Public NoC As Integer
Public NoD As Integer
Public NoE As Integer
Public NoF As Integer
Public NoG As Integer
Public NoH As Integer
Public NoI As Integer
End Structure

Private Declare Auto Function 関数名 Lib "DLL名フルパス" _
(ByRef _構造体 As 構造体, ByVal LpStr As String) As Long

Public Sub test()
Dim _構造体 As New 構造体
Dim _構造体A As New 構造体A
Dim 戻り値用変数 As Long

構造体、構造体Aの値設定

戻り値用変数 = 関数名(構造体, "文字列")

End Sub

上記のようにプログラムを記述しています。
関数の呼び出しは成功していますが、
関数の戻り値が想定外の値になって返ってきます。
構造体の1番目の項目の型:void*をVB側でIntPtr型で
宣言している箇所が怪しいと考えていますが、
実際どこが間違っていてどう修正するべきかわかりません。

上記プログラムについて間違っている箇所、修正するべき箇所について
ご指摘を宜しくお願い致します。

返信 編集キー/


管理者用

- Child Tree -