我收到一个错误消息,说“应用程序无法正确启动(0xc000007b)。单击确定关闭应用程序。”当我尝试运行一个程序时,我用Visual Studio 2005进行了编译。x86 AMD64 DLL问题 - Visual Studio 2005?
当我运行windows程序“依赖”这个可执行文件时,我看到一个TON的DLL被列为“x86”dll。这些都显示为OS DLL(位于c:\ windows \ system32目录中)。 “取决于”在描述架构时将它们列为红色,因为我正在制作AMD64二进制文件。一些DLL(我从源代码编译的QT dll)被列为AMD64。
我曾尝试在“c:\ windows \ system32”之前的路径中添加“c:\ windows \ SysWOW64”并重建我的应用程序。这看起来像我这些DLL的64位版本生活的地方。这仍然收到相同的失败消息。我的项目设置为x64项目。在我的项目 - >属性 - >链接器 - >高级 - >目标机器下,我尝试了“MachineX64”和“未设置”。当我尝试运行我的可执行文件时,这两个设置在运行时都会导致相同的错误消息。
我不是很了解在windows环境中构建软件。我的大部分经验来自Linux。对我来说,这似乎是一个DLL架构问题,但我不确定。 Google'这个错误信息并没有提供给我很多有用的信息。任何帮助提供将非常感激。我刚开始一个新的工作,看起来像我有很多很多的问题,当涉及到实际运行我们的代码...
感谢您百忙之中抽出时间来阅读我的问题,
-Brian J. Stinar-
首先,非常感谢您为我提供反馈。
'set'为我提供了以下信息,我相信这些信息可以帮助您回答一些问题。由于我对windows系统管理并不熟悉,请告诉我是否有其他命令,您认为我应该运行它来为您提供更多有用的信息。我相信输出是从 '设置' 相关的是以下:
中的libversion = Win64的
PROCESSOR_ARCHITECTURE = AMD64
PROCESSOR_IDENTIFIER = Intel64位家族6模型26步进5,GenuineIntel
PROCESSOR_LEVEL = 6
PROCESSOR_REVISION = 1a05
在我的系统属性下,我找到下面的值S的相信会有助于澄清我的情况:
Windows 7的
处理器:Intel(R)至强(R)CPU W3530 @ 2.80GHz的2.79 GHz的
系统类型:64位操作系统
我不完全相信我理解x64和ia64之间的区别,但据我所知,ia64是用于itanium类处理器的,我没有。我相信我有一个x64处理器。这是根据阅读
http://mikedimmick.blogspot.com/2006/03/whats-difference-between-x64-and-ia-64.html
至强处理器后落入64类。我不确定我是否理解AMD64如何适应这一点。
我是否应该连接AMD64 DLL,并且如果我实际上有英特尔至强芯片,我的程序是否应该列出CPU类型AMD64?
再次感谢你的帮助,
布赖恩J. Stinar-
根据从平台SDK err.exe,0xC000007b是STATUS_INVALID_IMAGE_FORMAT(或ERROR_INVALID_NAME)。所以是的,听起来像是一个架构问题。你肯定在64位窗口上运行?你没有混合x64和ia64? – Rup 2010-08-16 16:44:32