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

タイトル Re^3: Dll 内の関数を別の Dll を使って呼び出したい。
投稿日: 2014/07/08(Tue) 15:34
投稿者魔界の仮面弁士
> DLL_Bを表に出したくないとの回答でした。
???
であれば、そもそも DLL_B など作らず、最初の DLL_A をそのまま使えば良いような…。

かといって、DLL_A を表に出したくない、という意味だとしても、
DLL_A を必要とすることには変わりないので、まだ意図が分からないです。


> カレントディレクトリやプロジェクトで使う DLL は
> DLL_A としてではなく、DLL_B として使いたとのことです。

その発言だけ聞くと、DLL_A をリネームして、DLL_B という名前で配置しておけば
解決するような気もしますが、そういう話ではないのですね?



今回選択した「DLL_B という ActiveX DLL で中継する」という手法は、
DLL_A を直接 Declare する場合に比べて、状況が悪化する可能性も考えられますが、
本当にその手法で問題が無いか、発注者に確認されていますでしょうか。


・参照設定することで、VB 以外(スクリプト等)からも呼びやすくなる。
 →「表に出したくない」というが、むしろ、公開度が上がる結果となる。

・ActiveX DLL 化することで、システム登録が必須となる。また、バイナリ互換性の維持も重要となる。
 →「別の DLL として使いたい」という理由の如何によっては、管理の煩雑度を増す結果となる。


> > 「クラスモジュール」を用意していたと思います。
> > そこに Public Function を追加し、
> クラスモジュールを以下のように書き換えたのですが、これで宜しいでしょうか?

で、肝心の『Public Function』はどこでしょうか?


> 「コンパイルエラー:メソッドまたはデータメンバが見つかりません。」
> となり、やはり上手くいきません。
.Foo というのは仮の名前です。実際には、参照設定した自作 DLL の
Class1 に作成した「Public Function」の名前と一致させて下さい。


> set o = CreateObject("Project1.Class1")
> call o.bar()
> こちらも試してみましたが、これも駄目でした。
CreateObject で失敗するのであれば、プログラムIDが間違っているか、
もしくは DLL の登録に失敗しているかのいずれかです。

bar メソッドの呼び出しで失敗するのであれば、メソッド名や引数が間違っているか、
Public Sub bar() または Public Function bar() を実装し忘れているかのいずれかです。

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

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