はじめまして!
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 さん
シャノン さん
本当にありがとうございます。