x86 AMD64 DLL问题 - Visual Studio 2005?

时间:2010-08-16 16:39:29

标签: windows dll visual-studio-2005 linker

我收到一条错误消息“应用程序无法正常启动(0xc000007b)。单击”确定“关闭应用程序。”当我尝试运行我用Visual Studio 2005编译的程序时。

当我运行Windows程序“依赖”这个可执行文件时,我看到一个列为“x86”dll的DLL的TON。这些似乎都是OS dll(位于c:\ windows \ system32目录中)。 “Depends”将这些列为红色描述架构,因为我正在制作AMD64二进制文件。一些DLL(我从源代码编译的QT dll)被列为AMD64。

我尝试在“c:\ windows \ system32”之前将“c:\ windows \ SysWOW64”添加到我的路径并重建我的应用程序。这看起来像这些DLL的64位版本所在的位置。这仍然会收到相同的失败消息。我的项目设置为构建为x64项目。在我的项目下 - >属性 - >链接器 - >高级 - >目标机器,我已尝试“MachineX64”和“未设置”。当我尝试运行可执行文件时,这两个设置在运行时都会导致相同的错误消息。

我不太了解在Windows环境中构建软件。我的大多数经验来自Linux。对我来说,这似乎是一个DLL架构问题,但我不确定。 Google提供此错误消息并未向我提供有用的信息。我们非常感谢您提供的任何帮助。我刚开始一份新工作,看起来我在实际运行代码时遇到了很多问题...

非常感谢你花时间阅读我的问题,

-Brian J. Stinar -

首先,非常感谢您提供反馈意见。

'set'为我提供了以下信息,我相信这些信息有助于回答您的一些问题。由于我对Windows系统管理并不熟悉,如果您认为我应该运行任何其他命令以便为您提供更多有用信息,请告诉我。我认为与'set'相关的输出如下:

=的libversion Win64的

PROCESSOR_ARCHITECTURE = AMD64

PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 26 Stepping 5,GenuineIntel

PROCESSOR_LEVEL = 6

PROCESSOR_REVISION = 1A05

在我的系统属性下,我发现以下值,我相信这有助于澄清我的情况:

Windows 7

处理器:英特尔(R)Xeon(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

Xeon处理器属于x64类别。我不确定我是否理解AMD64如何适应这一点。

我是否应该使用我要链接的AMD64 DLL,如果我实际拥有Intel Xeon芯片,我的程序是否应该列出CPU类型AMD64?

再次感谢您的帮助,

-Brian J. Stinar -

2 个答案:

答案 0 :(得分:1)

SysWOW64是32位DLL存在于64位系统上的地方。 ('WOW'是'Windows On Windows',例如64位窗口上的32位Windows DLL,因此SysWOW64是Windows上的'Sys'tem文件夹在Windows64上'通常,程序运行时操作会在Windows自动重定向到此处在64位安装上检测32位图像。

我同意Rup - 听起来你的图像是为不同的架构而不是你正在运行的。

答案 1 :(得分:0)

有两个DLL不正确。这些是:

libifcoremdd.dll libmmdd.dll

我今天和同事一起解决这个问题,然后把他们从一个他知道很好的地方复制过来。当我早些时候与另一位同事工作时,我们将它们从不同的位置复制,结果证明是不正确的。

此外,如果其他人遇到类似问题,

dumpbin /headers DLLName 

将提供有关您正在使用的DLL的大量有用信息。我不确定这些不同的DLL之间有什么区别(在我检查它们之前,我覆盖了旧的DLL)。如果我对此问题进行其他分析,我会在此处发布结果。我怀疑DLL是x86或ia64,而不是我需要的x64 DLL。

在Windows环境中打包和移动此类DLL的最佳解决方案是什么?只是将它们复制到我路径中的目录似乎不是最佳解决方案。

非常感谢大家!

-Brian J. Stinar -

brian-stinar.blogspot.com