人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【VC6で作成されているDLLをVB6で呼び出したい!】VC6で作成されているDLLには
メソッドの引数としてBYTE* ,int*型が存在するのですが、VBで呼び出す場合はどうしたら良いでしょうか。
(DLLを用いるラッパーのDLLを用意してポインタ表現とかを排除した方が良いのでしょうか?)
ご助言宜しくお願いします

●質問者: harunoharuno
●カテゴリ:コンピュータ
✍キーワード:byte DLL VB vb6 ポインタ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●60ポイント

http://questionbox.jp.msn.com/qa1186875.html

1バイトの文字を 文字コードで渡せば OKらしいです。

◎質問者からの返答

回答ありがとうございます。


2 ● mj99
●400ポイント ベストアンサー

hoge.dllに

void foo(byte* b,int* n) {}

があるとして、


VB6でこれを呼ぶ場合は、下記のとおりです。

Private Declare Sub foo Lib "hoge.dll" (ByRef b As Byte, ByRef n As Long)

Private Sub test()
 Dim b(9) As Byte
 Dim n(99) As Long
 
 Call foo(b(0), n(0))
 
End Sub


関数宣言は、参照渡し(ByRef)で定義しておき、

関数実行時、配列の先頭の変数を渡します。

※VCのintに対応するVB6の型はLongです。VB6のIntegerは2バイト

参照渡しとは 【call by reference】 - 意味/解説/説明/定義 : IT用語辞典


上記の例では、VB6側でb(9)、n(99)で変数を用意しているので、

VC側の関数では、

変数bは、b+0?b+9

変数nは、n+0?n+99

の範囲で実体を読み書きできます。

(範囲外にアクセスした場合の動作は予期できない。案外なにも起こらない)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ