XPで起動したくないWindows7x64上のVS2008SP1a(9.0.30729.4148)でビルドされたアプリケーションがあります。
メッセージはThe application failed to initialize properly (0x80000003). Click on OK to terminate the application.
です。確認したところ、KERNEL32.dllからロードしようとしてdepends.exe
いることがわかりました。FlsAllocはVista以降でのみ使用できます。アプリケーションでは使用されていないと思います。msvcr90.dll
FlsAlloc
問題を解決する方法は?
SxSパッケージはすでにターゲットマシンにインストールされています-実際、私は9.0 SxSの3つのバージョンすべてを持っています(初期リリース、sp1、およびsp1 +セキュリティパッチ)
アプリケーションはでコンパイルされます_BIND_TO_CURRENT_VCLIBS_VERSION=1
また、私は正しいターゲットWindowsバージョンを定義しましたstdafx.h
#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
マニフェストファイル
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b" />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b" />
</dependentAssembly>
</dependency>
</assembly>
依存からの結果
アドレス0x00400000で「c:\ programfiles \ app \ app.EXE」(プロセス0xA0)を開始しました。モジュールを正常にフックしました。アドレス0x7C900000に「c:\ windows \ system32\NTDLL.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x7C800000に「c:\ windows \ system32\KERNEL32.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x785E0000に「c:\ programfiles \ app\MFC90.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x78520000に「c:\ programfiles \ app\MSVCR90.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x7E410000に「c:\ windows \ system32\USER32.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x77F10000に「c:\ windows \ system32\GDI32.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x77F60000に「c:\ windows \ system32\SHLWAPI.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x77DD0000に「c:\ windows \ system32\ADVAPI32.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x77E70000に「c:\ windows \ system32\RPCRT4.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x77FE0000に「c:\ windows \ system32\SECUR32.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x77C10000に「c:\ windows \ system32\MSVCRT.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x5D090000に「c:\ windows \ system32\COMCTL32.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x76380000に「c:\ windows \ system32\MSIMG32.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x7C9C0000に「c:\ windows \ system32\SHELL32.DLL」をロードしました。モジュールを正常にフックしました。アドレス0x77120000に「c:\ windows \ system32\OLEAUT32.DLL」をロードしました。モジュールを正常にフックしました。ロードされた"c:
Windows SDK 7がインストールされ、デフォルトのSDKとして構成されていることを述べておく必要があります。