• 締切済み

VisualBasic6.0からVisualC++で作成したDLLを呼

VisualBasic6.0からVisualC++で作成したDLLを呼び出す、簡単なプログラムの仕方を教えてください。 初心者ですが、VisualBasic6.0からVisualC++で作成したDLLを呼び出す簡単なプログラムの仕方、または、サンプル等がありましたらどうぞ宜しくお願いいたします。初心者なので、可能な限り、簡単なプログラムのサンプルがあったら嬉しいです。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

モジュールのGeneric部(プロシージャに属さない部分)に 以下の宣言文を記述します。 Declare Function|Sub 関数名 [Alias "実関数名"] Lib "DLLのパス" ([パラメータ定義]) [As 戻り値の型] 例: Declare Function AscToInt Lib "MyDLL" _     (ByVal 文字 As String) As Long MyDLL上にあるAscToIntという関数を定義しています。 パラメータは文字列で、戻り値は整数です。 使用する場合は以下の通りです。 Dim T As String Dim R As Long R = AscToInt(T) DLLはシステム既定フォルダ→カレントフォルダの順に 探します。これ以外の場所にある時はフルパスを指定する 必要がありますが、移植時に困るので、DLLはカレントに 置いて、実行後は直ぐにカレントを移動するようにします。 定義例のように拡張子が".DLL"の場合は省略可能です。 パラメータと戻り値の形式はVBの型とC++での型の違いを 良く認識したうえで定義する必要があります。 ByValは値渡し、ByRef(省略時解釈)は参照(ポインタ)渡し です。文字列はANSI変換がかかります。 また、Declare Function とした場合は戻り値がVariant型 出ない限り、必ず型宣言しなければなりません。これをしないと、 戻り値を参照するしないに関わらず、戻り値をVariantに変換 しようとするので、場合によってはメモリの無い所をポインタで 参照する危険があります。 尚、DLLはリンク時に名前でエントリポイントを取得可能な ように作っておかないと、関数を見つけられません。

noname#245936
noname#245936
回答No.1

Googleで、VB6 Windows API などと検索するとサンプルは山ほど出てきます。 C++で作ったDLLをCallとはいってもやり方はいくつかあり。 いわゆる、ActiveXという形にしたものであれば、DLLのregsvr32登録+VB側で 参照設定をしてから関数を呼ぶことになりますし。 普通のDLLならば、標準モジュールで、Declare Function xxx というような 関数宣言をしてから関数を呼ぶことになります。 DLL次第といったところでしょう。

関連するQ&A

専門家に質問してみよう