基本的に、私たちのソフトウェアが の下で実行されるときWindows 7
、それは機能します: への呼び出しがLoadLibrary()
成功し、人生は良いものになります。
しかし、同じソフトウェアがXP
ボックス (最新のパッチ) で実行されている場合、 の呼び出しは失敗し、を指定するエラー コードで がLoadLibrary
返されます。 NULL
module not found
アプリ のバージョンではなくUNICODE
バージョンを使用するように強制しようとしました。LoadLibraryW
LoadLibraryA
インストール フォルダーがローカル ドライブ文字を介してマップされていることを確認してみました。
そして、パス名が実際に実行中のマシンからアクセスできることを確認しました (つまり、生成されたエラーは、ロードしようとしているパスを示し、その文字列を使用して実際にファイルを見つけます)。
奇妙なことに、このコードは でコンパイルすると正しく実行されVS 2008 SP2
ます。
クライアント マシンが の場合も問題なく動作しますWindows 7
。
VS 2010
コンパイルされてリンクされ、クライアントで実行された場合にのみ失敗しXP
ます。
世界で何がうまくいかないのか、私は完全に途方に暮れています。
シチューに奇妙さを加えるには:
開発ボックスを起動し、このコードを の下XP
VM
のデバッグ ビルドで実行すると、正しく動作します。 VS2010
XP
実際、私の の下ではXP
VM
、標準 (リリース) ビルドも正しく実行されます!!!
失敗するのは、真のXP
ボックスから実行したときだけです(これまでにいくつかのマシンを試しましたがXP
、両方とも完全にパッチが適用されています)。
何かご意見は?!
私は信頼できるアイデアを使い果たし始めています。:(