簡體   English   中英

應用程序無法加載XP SP3和與comctl32相關的清單

[英]Application does not load with XP SP3 and a manifest related to comctl32

我的應用程序(使用Mingw編譯的C ++,主要使用wxWidgets,Boost和SFML)在Windows 7或Vista上運行流暢,在Windows XP SP3上無法正常運行。 我有一個.manifest文件,該文件允許可執行文件使用Windows XP / Vista / 7:

<?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 XP SP3(但帶有丑陋的過時控件)啟動可執行文件。 如果我讓清單文件運行,則該文件在Vista / 7上運行不會出現問題,但在Windows XP SP3中,該應用程序已加載到內存中(我可以在任務管理器中看到它),但是什么也不做。 沒有錯誤消息,它甚至不會崩潰。

如果我重新編譯它以顯示控制台,則后者不顯示任何內容。

如果我使用gdb對其進行調試,則調試器將顯示“正在啟動程序:...”,然后被阻止(Control + C不起作用)。

我試圖在可執行文件上使用Dependency Walker。
這是帶有清單文件的日志: http : //pastebin.com/J6T8KBH8
(這是沒有清單的日志: http : //pastebin.com/zrYzRaWE /在這種情況下,應用程序加載沒有問題,並且仍在日志末尾運行。)

我已經突出顯示了Dependency Walker中紅色顯示的行,它表示comctl32中缺少一個過程。 此外,日志似乎已中斷,沒有特定的錯誤。

您是否知道為什么使用清單時應用程序似乎在沒有崩潰或消息的情況下似乎被中斷?

事實證明,該問題僅在使用最新版本的SFML庫時出現。 確切地說,在最近的發行版中,SFML庫名稱已從“ sfml-xxx.dll”更改為“ sfml-xxx-2.dll”。

當使用新名稱鏈接到最新版本的庫時,該應用程序不想在Windows XP SP3上啟動。 我已經對用於編譯SFML的CmakeList.txt文件進行了調整,以便使用庫的舊名稱(sfml-xxxx.dll),並且在鏈接到這些庫時,該程序可以正常運行。 唯一不同的是庫名稱。 但是,在Dependency Walker中,我看到使用新名稱(sfml-xxxx-2.dll)時, wxWidgets和Windows相關庫之前會顯示SFML庫。 當我使用舊名稱(sfml-xxxx.dll)時,SFML庫顯示列表的末尾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM