- - PR -
実行時に参照設定したdllが見つからない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-11 19:34
VB.NETでWindowsアプリケーションを作成していますが参照設定を行ったdllが実行時に見つからないというエラーが発生します
詳細な設定手順と現象は以下になりますが、解決方法はないでしょうか? 設定手順と現象 1.COMとして提供されたdllをregsvr32にてシステムに登録する。 2.「参照設定」-「参照の追加」より参照の追加ダイアログを表示させ COMのタブを選択し対象となるコンポーネントを選択し追加する。 3.参照追加したコンポーネントのInteropが作成される。 (型はActiveX、ローカルコピーはTrue、パスはInteropの作成されたパス) 4.コードから参照追加したコンポーネントは利用可能で コンパイルも問題なく実行可能。コンポーネントを オブジェクトブラウザにて表示させるとクラスやメソッド、メンバが 確認できる。 5.デバッグ実行を行うとコンポーネントのクラスを利用している箇所にて System.IO.FileNotFoundExceptionが発生し 「指定されたモジュールが見つかりません。」となる。 システムに登録せずに、参照追加時に[参照]ボタンから 直接dllを選択し参照追加した場合も実装時は何の問題も無く 実行時にエラーとなります。エラーは System.Runtime.InteropServices.COMExceptionが発生し 「CLSID '{XXXXXX-XXXXX-XXXX-XXXX-109D533B6575}' の COM オブジェクトは有効でないか、登録されていません。」と なります。 [ メッセージ編集済み 編集者: タンク 編集日時 2006-05-11 19:35 ] | ||||
|
投稿日時: 2006-05-11 19:39
CLSID が書かれていないので皆目検討がつきませんでしたが、どんな COM なんでしょう?
それとも、「COM として提供された dll」は、自作のものなんでしょうか? だとしたら、何でどうやって作られたものですか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-05-11 19:50
dllは自作ではなく他から提供されたものです。
VCで作られていて別のシステムにアクセスするための物となります。 中の作りは把握できていない状態です。 | ||||
|
投稿日時: 2006-05-12 00:08
ぢゃあVB.NETとは関係なく。 #私は.NETはよくわかってません。 DLLの依存関係を知りたいなら、Platform SDKのToolにあるdepends.exe (Dependancy Walker)を使えば、DLLがどのDLLで出来てるか分かります。 | ||||
|
投稿日時: 2006-05-15 17:07
[解決]
Dependency Walkerで確認してみたところ、MSJAVA.dllへのパスが見つからないとのことで MSJAVA.dllをsystem32に配置して依存関係に問題が無い事を確認して、再度試してみましたが、結果は変わらず「指定されたモジュールは見つかりません」でした。 しかし勉強になりました。ありがとうございます。 原因はdllをregsvr32にてシステムに登録する際に実行する場所のパスに日本語が含まれている事が原因でした。 一度システムから削除して日本語を含まないパスでシステムに登録したら正常に動作しました。 システムに登録する時に実行するパスに日本語が含まれているとマズイとは知りませんでした。。。 | ||||
|
投稿日時: 2006-05-15 17:12
普通は、%WinDir%\System32 に配置するので、マルチバイト文字は含まないですよね。 Program Files 内のアプリケーション フォルダに登録したい場合は、マルチバイト文字はありえますね... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1