はじめまして!
VC++を始めて1ヶ月くらいの初心者です。
いろいろ調べてもどうしてもわからなかったので、質問させていただきます。
ちなみに開発環境は以下のとおりです
Windows2000
VC++ 6.0
質問内容ですが
DLLを明示的リンクでロードしたいのですが、ロードしたいDLLファイルをexeのあるフォルダにいれてあるのに、LoadLibraryが失敗してしまします。
別の環境(windowsXP)で実行した時は、正常にロードできたのですが、環境を変えるとロードに失敗してしまうようになりました。
ちなみにフルパスにしてもダメでした。
HMODULE hLib = LoadLibrary("PRC.DLL");
if (!hLib) {
fprintf(stderr, "Error loading PRC.DLL: %d\n", GetLastError());
exit(1);
}
なにか少しでもアドバイスをくださると非常にありがたいです。
よろしくお願いします。
せっかくGetLastErrorを調べているのですから,
その値を元に調査してみればどうですか?
VC++にはエラー検索ツールが付属していますし,
そうでなくてもNETコマンドのサブコマンドHELPMSGで調べることができます。
アドバイスありがとうございます。
そういうツールがあることを知りませんでした・・・
本当にすみません。
いちおうエラー検索ツール、NETコマンドで調べても
「指定されたモジュールがみつかりません」
と出るだけで、原因がさっぱりわかりません。
ちなみに エラーコードは126でした。
何かロードが失敗する要因となりそうなことってありますか?
RPC.DLL は、他の DLL に暗黙リンクしていませんか?
簡単に言えば、RPC.DLL は、動作するために他の DLL を必要としていませんか? ということですが。
RPC.DLL があっても、RPC.DLL の動作に必要な他の DLL がなければ、LoadLibrary は失敗します。
ご指摘のとおり他のDLLに暗黙的にリンクしてました。
無事に解決しました。
DLLが他のDLLをリンクしているということを知りませんでした。
勉強になりました。
YuO さん
シャノン さん
本当にありがとうございます。
ツイート | ![]() |