掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Regsvr32で登録したDllを、VBで宣言するには? (ID:142500)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
…… VB6 の IDE で、そんなメッセージ出ましたっけ? 参照設定できないファイルを設定した場合のメッセージは、 VB6『指定されたファイルへの参照は登録できません。』 だったかと思います。 これが Visual Basic .NET 系の IDE であれば、 VB8『ファイルにアクセスできて、有効なアセンブリであること、または COM コンポーネントであることを確認してください。』 VB9『ファイルがアクセス可能で、有効なアセンブリまたは COM コンポーネントであることを確認してください。』 というメッセージになりますが———それにしても、SORASAさんが遭遇したという VB?『ファイルにアクセスできて、有効なアセンブリであること、またはCOMコンポーネントであることを確認して下さい』 のメッセージとは微妙に異なっていますね(少なくとも私は、そのエラーを見たことがありません)。 > 対象のDLLファイルを、右クリック-プロパティでみると、「OLESelfRegister」という項目があります。 "OLESelfRegister" が無くても 参照設定できる DLL は多いので、それだけでは ActiveX DLL であると決め付けるわけには行きませんが、VB6 製の DLL であれば、 その項目名が入りますから、それが ActiveX DLL である可能性は高そうですね。 (最初の質問からして、Regsvr32 自体は正常に登録されているのでしょうし) その DLL は、どのようにして作成したもの(もしくは入手したもの)なのでしょうか? > 参照設定できないことが問題なのか、 DLL だけではなく、その DLL の依存コンポーネントが揃っているかどうか、 DLL の提供元に問い合わせてみてください。依存ランタイムやライセンスファイル等が 不足しているのかも知れませんし。 また、それらの DLL の素性を明らかにするために、 OLE/COM オブジェクトビューワ(OLEVIEW.EXE)で タイプライブラリ情報を参照したり、 Dependency Walker (DEPENDS.EXE) で、外部公開関数の一覧などを調べてみるのも良いかも。 > レジストリの[HKEY_CLASSES_ROOT]以下に登録されてあるにも関わらず、CreateObjectを実行しても、 レジストリには、他にどのように登録されていますか? 少なくとも、 >>> HKEY_CLASSES_ROOT\CLSIDの下、 >>> [InProcServer32]にDllのフルパスが格納されており、 >>> [ProgID]のデータ領域にタイプIDが格納されています。 だけでは、登録情報が足らないように思えます。 > CreateObjectを実行しても、「ファイルリソースが見つかりません」と > リソース先を見つけられないことが問題なのか、この切り分けで困っています。 このメッセージも、私は見たことがありません…。 『ファイルリソースが見つかりません』 ではなく、 『必要なリソースが見つかりません。』 『リソースが見つかりませんでした。』 などであれば、幾度か目にしているのですが、これらは CreateObject のタイミングで 発生するものではありませんでした。 CreateObject を失敗した時に出るメッセージとして、私が見た事があるのは、 『ActiveX コンポーネントはオブジェクトを作成できません。』 や 『オートメーション エラーです。 指定されたモジュールが見つかりません。』 などですね。いずれも、コンポーネントのセットアップに失敗しているか、または CreateObject するための権限が不足していた場合のものでした。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.