如何链接需要rsrc部分和comctl32.dll的64位可执行文件?
试图构建UltraDefrag。如何链接需要rsrc部分和comctl32.dll的64位可执行文件?
听起来相当简单,但只要将rc.o添加到二进制文件的链接对象中,就会使用32位版本的comctl32.dll在程序启动时触发0xc0000007错误。
这是一个已知的bug mingw64,但错误没有答复自2011年以来,我需要为这个一种解决方法(该程序需要不使用cygwin.dll,所以我不能用cygwin)。
任何想法?
即清单包含
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
这可能发生,如果application manifest明确规定了通用控件
的32位版本,您需要将ProcessorArchitecture用于更改为:
processorArchitecture="*"
如果这是你问题的原因,这不是MinGW-w64的错误。
OK,还有默认情况下,该项目包括一个清单,确实如此。 – user2284570
当你试着以错误的清单您的64位应用程序,你也可能得到错误'应用程序无法正常启动(0xc000007b)。单击确定关闭application.'和异常'未处理的异常在0x000007F8EE9C1E80(ntdll.dll中)在MyApp.exe中:0xC000007B:%HS要么没有设计在Windows上运行,或者它包含一个错误。尝试使用原始安装介质重新安装程序,或与系统管理员或软件供应商联系以获得支持。错误状态0x.' – izogfif
如果这是一个已知的错误,你应该提供一个知道它的位置的链接 – jturney
它确实是MinGW-w64工具链的一个通用问题,你应该能够生成一个简单的测试用例。 – jturney
@jturney:http://permalink.gmane.org/gmane.comp.gnu.mingw.announce/3311 – user2284570