tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: Dll 内の関数を別の Dll を使って呼び出したい。
投稿日: 2014/07/08(Tue) 11:07
投稿者魔界の仮面弁士
> ここで、別の Dll を介して Dll_A を呼び出したいという要望を受け
その要望が、どのような理由から発生したのか、事情をお聞かせ頂けないでしょうか。

「DLL」にも種類があります。目的としている理由如何では、今回みゆき族さんが
選択された DLL 利用法とは、別の道(注1)を模索するという選択肢もありえるかも知れません。


> ある Dll( Dll_A とします) 内にある関数( foo とします)を別の Dll( Dll_B とします) から呼び出したいのですが、どうすれば宜しいでしょうか?
> VB6 の ActiveX Dll から Dll_B を作成しました。
AcitveX DLL で作成された DLL は、関数公開型のものではないため、
基本的には(注2)、Declare ステートメントで利用することはできません。

DLL_A 側で「DLL_B を『参照設定』する」ことで利用できるようになります。


(1) AcitveX DLL である以上、Dll_B を作成する際に「クラスモジュール」を
 用意していたと思います。そこに Public Function を追加し、そこに
 DLL_A を呼び出すコードを記述して下さい。

(2) 作成した DLL_B を、EXE 側から「参照設定」してください。
 EXE から DLL_B のコードを利用するために、
  Dim o As Class1
  Set o = New Class1
  ret = o.Foo(val1, val2, val3, val5, val6)
  Set o = Nothing
 のようにします。




(注1) たとえば、.local あるいは manifest によって、AcitveX DLL を side-by-side で
 呼び出すといった方法があります。
http://msdn.microsoft.com/ja-jp/library/ms811694.aspx
http://msdn.microsoft.com/ja-jp/library/ms811700.aspx
http://msdn.microsoft.com/ja-jp/library/cc482775.aspx


(注2) 関数を無理矢理公開する方法もあるにはあるのですが、undocumented な手法でありお奨めしません。
http://www1.koalanet.ne.jp/akiya/vbindeep/index.html#option2

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。