我遇到了一个我创建的32位ATL dll的问题 - 每当我在Windows XP(32位)计算机上使用dll时,它都会在没有任何警告的情况下崩溃。我认为这个问题与我编译dll的Windows版本有关,但我不确定。只是一点历史:
我最初使用Visual Studio 2008在Windows XP(32位)盒子上开发了这个dll。这个版本的dll在Windows XP(32位)和Windows 7(32位和64位)上运行良好。然后,我得到了一个带有Windows 7(64位)和Visual Studio 2010的新开发盒。我将我的VS2008项目转换为VS2010,编译它并在Windows 7(32位和64位)机器上完美运行;但是,当我在Windows XP(32位)上运行时,它会崩溃。
有趣的是,我能够在XP机器上成功regsv32 dll,但当我运行依赖walker时,它说它丢失了一堆文件:
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盒子,现在依赖者walker告诉我:
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.
我不知道从哪里开始。任何人都可以帮助我吗?
修改
答案 0 :(得分:1)
我认为这些dll是specific to Windows 7,因此它们无法在XP上运行。我怀疑您在清单文件中有特定于Windows 7的内容,或者您在_WIN32_WINNT
或WINVER
中指定了最低版本,例如,请参阅http://msdn.microsoft.com/en-us/library/aa383745%28v=vs.85%29.aspx
要查看清单文件中的内容,请使用mt工具:
mt -inputresource:mydll.dll;#1 -out extracted.manifest