[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/09/18(Sun) 13:27
投稿者名:金次朗
Eメール:gangin_gingan_1270@mail.goo.ne.jp
URL :
タイトル:
VBで作成したDLLを別アプリから呼ぶときのエラーについて
環境
  WinXP
  VB6
お世話になります。
VBでActivXDLLを作成し、それを別のVBアプリから実行しようとして
いるのですが、以下のエラーがは発生してしまいます。
実行時エラー 453
エントリ foo がDLLファイル Test_DLL.dll 内に見つかりません。

ActivXDLL側のコード記述は以下です。
Class1
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Option Explicit

Public Function foo(ByVal iString As String) As Boolean
    foo = MsgBox(iString, vbYesNo) = vbYes
End Function
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

呼び出しソフトの記述
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Option Explicit

Private Declare Function foo Lib "Test_DLL.dll" (ByVal iString As String) As Bool
ean

Private Sub Command1_Click()
    Dim ret As Boolean
    ret = foo("あああああああ")
End Sub
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

DLL側のプロジェクトのオブジェクト名「TEST_DLL」
DLLの登録処理「Regsvr32 /s Test_DLL.dll」を実行。
呼び出し側のプロジェクトの参照設定に「TEST_DLL」を設定。
呼び出しソフトとDLLを同一フォルダに格納して実行しました。
この状態で、先にあげたメッセージが表示されてしまいます。

以上よろしくお願いします。

投稿時間:2005/09/18(Sun) 16:46
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: VBで作成したDLLを別アプリから呼ぶときのエラーについて
> Public Function foo(ByVal iString As String) As Boolean
>     foo = MsgBox(iString, vbYesNo) = vbYes
> End Function

> この状態で、先にあげたメッセージが表示されてしまいます。

どのような動作になると期待されているのですか?
どのようにしたいのですか?

Private Sub Command2_Click()
    Dim foo As Boolean
    foo = MsgBox("あああああああ", vbYesNo) = vbYes
    Debug.Print foo
End Sub

投稿時間:2005/09/18(Sun) 17:05
投稿者名:金次朗
Eメール:gangin_gingan_1270@mail.goo.ne.jp
URL :
タイトル:
Re^2: VBで作成したDLLを別アプリから呼ぶときのエラーについて
> どのような動作になると期待されているのですか?
> どのようにしたいのですか?
>
> Private Sub Command2_Click()
>     Dim foo As Boolean
>     foo = MsgBox("あああああああ", vbYesNo) = vbYes
>     Debug.Print foo
> End Sub

既存のVBのアプリケーションの一部機能をDLL化させることが
目的です。

その際、私自身のActicXDLLの経験が乏しく、まずDLLの勉強として
コマンドボタンを実行し、引数として文字列をDLLに渡し、
DLL側で受け取った文字列をメッセージボックスに表示する。
という動作をさせようと考えています。

以上よろしくお願いします。

投稿時間:2005/09/18(Sun) 18:04
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: VBで作成したDLLを別アプリから呼ぶときのエラーについて
>この状態で、先にあげたメッセージが表示されてしまいます。
エラーメッセージとメッセージボックスのメッセージとカン違いしていました。
失礼しました。

Private Declare Function foo Lib "Test_DLL.dll" (ByVal iString As String) As Boolean
上記は要りませんよ。

ここの逆引きヘルプの DLLファイルを作成し、使用する は参考になりませんでしたか? 
hhttp://www.bcap.co.jp/hanafusa/VBHLP/DLLFile.htm

投稿時間:2005/09/18(Sun) 17:38
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re: VBで作成したDLLを別アプリから呼ぶときのエラーについて
 ActiveX DLLと普通のDLLがごっちゃになっているようですね。

 まずは、ヘルプ(MSDNライブラリ)で、以下のところを見てください。

 MSDN ライブラリ Visual Studio 6.0
  Visual Basic ドキュメント
   Visual Basic の使用方法
    コンポーネント ツール ガイド
     ActiveX コンポーネントの作成方法
      ActiveX DLLの作成

投稿時間:2005/09/18(Sun) 20:19
投稿者名:金次朗
Eメール:gangin_gingan_1270@mail.goo.ne.jp
URL :
タイトル:
Re^2: VBで作成したDLLを別アプリから呼ぶときのエラーについて
花ちゃんさん、Starfishさん、アドバイスありがとうございます。
教えていただいたソースで、意図したDLLの動作を確認することが
できました。
本当にありがとうございます。