2011-05-18 10 views
0

私のアプリケーションにサードパーティのDLL(つまりソースコードがありません)をロードしようとしています。 WindowsXP 32ビットシステムでは正常に読み込まれますが、Windows 7システムではGetLastError()からエラー#998を引用して読み込みに失敗します。LoadLibrary Win7でエラー32ビット、Win XPで成功32ビット

dllエクスポートビューアを使用して、 dllを参照し、インポートテーブルにリストされている3つのdll以外のすべてがこのサードパーティのベンダーから提供されていることを確認しました。どのように

SetDllDirectory(L"c:\\dlls"); 
HMODULE tempDLL = LoadLibrary(L"mydll.dll"); 
DWORD err = GetLastError(); 

任意のヒント:ここで
kernel32.dllの
mingwm10.dll
MSVCRT.DLL

私はインポートを行うために使用していますコードです:ありませんでしたものこれをデバッグしようとしていますか?

編集:私の答えのためのみんなに感謝し、そしてこれは私がこれまでに発見したものです:
a)はアプリケーションツールキットのパッケージには、その)
B(下記参照)に有用同僚Aであることを証明していなかったことができますできない、散発
C何か、それはので、彼の勝利7マシンと同僚BにロードするDLLを取得)管理者は何も

+0

奇妙なことに、Win7でkernel32.dllとmsvcrt.dllを問題なく読み込めます。 LoadLibraryがあなたのケースでNULLを返すことは確かですか? – mbykov

+0

あなたはdllロードパスのどこかにmingwm10.dllを持っていますか? – gregg

+0

私の頭の上からちょうど推測。 "管理者として"アプリケーションを実行しようとしていますか?そうでない場合は、結果を教えてください。 – TCS

答えて

5

を変更しなかったとして実行する理由を、それを見つけるために(それは無料のツールセットである)Microsoft Application Compatibility Toolkitを使用してみてくださいWindows 7で失敗します。これが役に立ちますと、互換性の問題のようです。

+0

優れたアドバイス。 +1 – 0xC0000022L

1

Data Execution Prevention(DEP)を無効にしましたか?

通常、これはVistaではデフォルトで有効になっていますが、XPでは無効になっています。 DLLにデータの実行を引き起こすバグがある場合、これはLoadLibrary呼び出し中に表示される可能性があります。