- ベストアンサー
NET2005でDllが読み込めない
- NET2005で作成したプロジェクトで自作のDLLを読み込む際にエラーが発生し、モジュールが見つからないエラーが出ます。
- プロジェクトはC++で記述されており、OSはWindows XP SP3を使用しています。
- 問題の解決方法として、最新バージョンのWindowsスクリプトホストを使用してコンピュータを更新する必要がありますが、詳細な手順が示されていません。リンク先も提供されていません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
コンバートしたプロジェクトでうまく読み込めるなら、そのプロジェクトで作成した実行ファイルとdllファイルを、開発環境が入っていないマシン(必要であればVirtualPCやVMWareなどで作成して)でちゃんと動作するか確認してみては? ランタイムや他のdllが必要であれば、それらをインストールやコピーしないと動作しなくなるので、必要なものが確認できます。 あと、コンバートしたプロジェクトと新規のプロジェクトの違いというと、UNICODEを使用するか否かという部分が大きいと思いますが、その辺は影響しませんか? UNICODEを使用するプロジェクトであれば、LoadLibraryに渡すファイル名もUNICODEにする必要があります。 もう1つ、チェックするとすれば、dllファイルの場所をフルパスで記述してみるとか。 以前、読み込むdllの場所によって、セキュリティの問題が発生したことがあって、何らかの対策が追加されているかもしれません。
その他の回答 (2)
- m-take0220
- ベストアンサー率61% (480/785)
提示されたリンクの内容は、 「アプリケーションを作成しようとすると、アプリケーションが正常に作成されず、次のようなエラー メッセージが表示されることがあります。」 なので、VisualStudioが正常に動作しない場合の対処方法です。 今回の問題とは違う内容でしょう。 dllファイルの読み込みに失敗する場合、そのdllファイルだけでなく、dllファイルが読み込む別のdllファイルの存在の有無も影響します。 Depnedency Wakerなどで依存関係をチェックしてみてはいかがでしょうか。
お礼
解答ありがとうございます。 dependswalkerで調べてみたところ、そのDLLにリンクしているDLLの一部がない(EFSADU.DLL WER.DLL IESHIMS.DLL)と言われますが.NET2003では動いてますよね^^; DLLリンクに問題ないDLLでもやはり読み込みません。 .NET2003のRuntime(CRT)が入っていないと指摘されたことがあるのですが そうなのでしょうか? NET2003のRuntime(CRT)というのは今は調べているところです。
- osamuy
- ベストアンサー率42% (1231/2878)
script 5.7で良いなら、マイクロソフトからダウンロード。 http://support.microsoft.com/kb/949140/ja ざっと追っかけた感じだと、regsvr32で済みそうな。
お礼
マイクロソフトでダウンロードして試したら、もう必要ないというエラーがでました。 どうやらもうアップデートされているようです。 regsvr32でDLLをどのようにするのでしょうか? regsvr32はDLLをレジストリ登録して使用するとあるのですが。 自分が使っているDLLはレジストリ登録は必要ない状況です。 あと説明の追記をしておきます。 DLL関連の追記です。 DLLは MFC・ATCは使っていません。 .FrameWorkもです。 利用側のEXEも使用していません。
お礼
解答ありがとうございます。 dllのフルパスを試してみます。
補足
>LoadLibraryに渡すファイル名もUNICODEにする必要があります。 Unicode文字に対応するということでしょうか? プロジェクトのプロパティでUnicode文字からマルチバイト文字に変更して デバッグをやっています。 Unicode文字じゃないとエラーが多く出て実行できないんでマルチバイト文字セットを使用するにしました。 DLLでもそうです。