2011-12-05 31 views
0

私が作成した32ビットのATL DLLに問題があります.Windows XP(32ビット)コンピュータは警告なしでクラッシュします。私はこの問題は、私がdllをコンパイルしたWindowsのバージョンに関連していると思うが、わからない。VC++のATL DLLがクラッシュする可能性があります - 32ビット/ 64ビットの問題に関連する可能性があります

私は当初Visual Studio 2008でWindows XP(32ビット)ボックスにdllを開発しました。このバージョンのdllは、Windows XP(32ビット)およびWindows 7(32ビット)で正常に動作しました。ビットと64ビット)。その後、Windows 7(64-bit)とVisual Studio 2010の新しい開発ボックスを手に入れました。VS2008プロジェクトをVS2010に変換してコンパイルし、Windows 7(32ビットと64ビット)マシンで完全に動作します。しかし、私はそれをWindows XP(32ビット)で実行すると、クラッシュします。

面白いことは、私はXPマシン上のdll成功regsv32することができたということですが、私は、依存関係ウォーカーを実行したときに、それはそれはたくさんのファイルを行方不明になったことを言った:私は

api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-datetime-l1-1-0.dll
api-ms-win-core-debug-l1-1-0.dll
api-ms-win-core-delayload-l1-1-0.dll
api-ms-win-core-errorhandling-l1-1-0.dll
api-ms-win-core-fibers-l1-1-0.dll
api-ms-win-core-file-l1-1-0.dll
api-ms-win-core-handle-l1-1-0.dll
api-ms-win-core-heap-l1-1-0.dll
api-ms-win-core-interlocked-l1-1-0.dll
api-ms-win-core-io-l1-1-0.dll
api-ms-win-core-libraryloader-l1-1-0.dll
...any many more of the same

Windows XPのボックスに私の開発マシンからこれらのファイルのすべてをコピーして、今で依存関係ウォーカーは私に語った:

Error: The Side-by-Side configuration information for "c:\documents and settings\poibri01\desktop\distributable\WERUI.DLL" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).
Error: Modules with different CPU types were found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

私はどこここから行くするかわかりません。誰でも助けてくれますか?

編集

  1. のMicrosoft Visual C++ 2010再頒布可能パッケージ(x86)は、Windows XPマシンにインストールされています。
  2. 私はDLLを32ビットリリース(デバッグではない)としてコンパイルしています。

答えて

1

これらのdllはspecific to Windows 7だと思いますので、XPでは動作しません。

:私は mtツールを使用して、例えば、マニフェストファイルに何があるかを確認するには http://msdn.microsoft.com/en-us/library/aa383745%28v=vs.85%29.aspx

を参照してください、あなたは、Windows 7に固有のマニフェストファイルで何かを持っているか、あなたは_WIN32_WINNTまたはWINVERで最小バージョンを指定しているどちらかと疑います

mt -inputresource:mydll.dll;#1 -out extracted.manifest 
+0

ありがとう、the_mandrill ...私はあなたが解決策にいると思います。私のプロジェクトでは、WINVERは0x0600(Windows Vista)に設定されていたので、0x0501(Windows Server 2003、Windows XP)に変更しました。 <?xml version = '1.0' encoding = 'UTF-8' standalone = 'yes'?> <のrequestedExecutionLevelレベル= 'asInvoker' uiAccess = '偽' /> 私は、DLLの依存関係ウォーカーを実行すると HydroPowerDeveloper

+0

はしかし、それはまだあなたが任意のアイデアを持っていない...のWindows 7のdllを参照するのか? – HydroPowerDeveloper

+0

Windows XPでdllがクラッシュしていると付け加えることを忘れました。 – HydroPowerDeveloper

関連する問題