我的应用程序(用C++编译,主要使用wxWidgets、Boost和SFML )在Windows7或Vista上运行平稳,在Windows SP3上不能正常工作。我有一个.manifest文件,它允许可执行文件使用Windows /Vista/7外观‘n’感觉:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
name="Game Develop Editor.Release - Edittime.App"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
<description>Executable</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>如果删除/重命名清单文件,我可以使用Windows SP3启动可执行文件(但使用丑陋的过时控件)。如果我让清单文件运行,它在Vista/7上运行时没有问题,但是在Windows SP3中,应用程序被加载到内存中(我可以在任务管理器中看到它),但是什么也不做。没有错误信息,它甚至不会崩溃。
如果我重新编译它以显示控制台,控制台就不会显示任何内容。
如果我使用gdb调试它,调试器将显示“启动程序:.”然后被阻塞( Control+C不工作)。
我试图在可执行文件上使用依赖沃克。
下面是包含清单文件的日志:http://pastebin.com/J6T8KBH8
(这里是没有清单的日志:http://pastebin.com/zrYzRaWE /在本例中,应用程序加载时没有问题,并且仍在日志末尾运行。)
我突出显示了在Dependency中以红色显示的行,它指的是comctl32中缺少的过程。此外,日志似乎被中断,没有具体的错误。
您知道为什么应用程序在使用清单时似乎没有崩溃或消息就被中断了吗?
发布于 2010-12-24 13:10:37
事实证明,只有在使用SFML库的最新版本时,才会出现问题。确切地说,在最近的一个版本中,SFML库的名称已经从"sfml-xxx.dll“更改为”sfmlxxx2.dll“。
当以新名称链接到库的最新版本时,应用程序不希望在Windows SP3上启动。我调整了用于编译SFML的CmakeList.txt文件,以便使用库的旧名称(sfml-xxx.dll),当链接到这些库时,程序工作得很好。惟一不同的东西是库名。但是,在Dependency中,我看到在使用新名称( sfml-xxxx-2.dll )时,SFML库出现在之前,而不是 wxWidgets和windows相关库。当我使用旧名称(sfml-xxx.dll )时,SFML库将在列表的末尾显示。
https://stackoverflow.com/questions/4503695
复制相似问题