dポイントプレゼントキャンペーン実施中!

http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?p …

上記サイトと同じような現象で、loadlibraryが失敗してしまうのですが、「暗黙リンク」っていうものはどう調べたら良いのでしょうか?
フルパスにしてもDLLの読込で失敗してしまって困っております。
ちなみに環境は以下の通りです。
WindowsXP
VC++ 6.0

まだ初心者なので出来るだけ細かくお願いいたしますm(__)m

A 回答 (2件)

LoardLibraryしているのに暗黙リンク?



リンクしているDLLがまた別のDLLをリンクしてるケースがあるかも。
VC++6.0に確か付属していた Dependency Walker を使えば暗黙リンクしている
DLLは確認できます。
動的リンクしているものはソースから調べてください。
(LoadLibraryの引数となっているパスのDLLもDependency Walkerで調べる対象)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。また、お礼が遅くなり申し訳ございませんでした。

「Dependency Walker」を使い、足りないDLLがあることが判明いたしました。

本当にありがとうございました。

お礼日時:2009/07/16 13:42

動的リンクしたDLLの中で、別DLLが暗黙リンクされている場合、それを調べる方法はありません。



暗黙リンクによりDLLが探される場所は、
・実行中のプロセスの実行形式モジュールがあるフォルダ
・現在のフォルダ
・Windows システム フォルダ
・Windows ディレクトリ
・環境変数 PATH で指定されたフォルダ
になります。ここに無ければエラーになります。

従って、暗黙リンクで呼び出されるDLLは、上記のいずれかのフォルダに無ければいけません。

なお「何が理由でloadlibraryが失敗しているか、GetLastError()で調べる」のが鉄則。

GetLastError()の値を見ると「え?それが理由?それならココが悪いに決まってる」って感じで、瞬間的に答えに辿り着ける事が多いです。

>フルパスにしてもDLLの読込で失敗してしまって困っております。
原因を確認せずに「困った困った」って言われたって、こっちが困ります。

あと、まさかとは思うけど、フルパスに"C:\MyProgram\Test2\test.dll"とかって指定してたりはしませんよね?
Cでは"C:\\MyProgram\\Test2\\test.dll"って感じで「\記号1個は\\のように\を2つ書く」っての忘れてませんよね?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!