通知
すべてクリア
固定ページ 2 / 2
前へ
2013年7月31日 7:37 PM
暗黙的なリンクでも同様な感じです。
MyApp.exeがMyDll.dllを使用するときにレジストリの
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exeの値
path=c:\long-path\ だとNTさんのLoadLibraryの失敗と同様なことが発生。
path=\\?\c:\long-path\ だと成功。
ただし、dllのフルパス長さは259文字までしか試していません。
Topic starter
2013年8月6日 8:11 PM
返信遅くなってすみません
>tetrapodさん
丁寧な解説ありがとうございました。
なるほど、/を使うと問題が起きてしまう、という事だったんですね。
やはりWindowsのバグっぽいので、通常のやり方では無理そうですね。
今回はリソースのDLLを読み込むだけだったため、
LoadLibraryEx(path, NULL,
DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE);
として回避することにしました。
ほかに回避策としては
・同階層に置いて相対パスにする
・LoadLibraryW()を明示的に使い、パスの先頭に[\\?\]を付ける
ですかね。
>ロマさん
暗黙リンクはあまり使わないのですが、情報ありがとうございます。
こちらでもだめなんですね。
とりあえず、Windowsのバグという事でどうしようもなさそうですし、
回避策も頂いたので解決とします。皆さんありがとうございました。
固定ページ 2 / 2
前へ