2011-11-04 111 views
2

我有一台装有Win7-64的新计算机。我安装了VS2010,并试图为32位环境编译一个C++非托管DLL。当我查看Dependency Walker中创建的DLL时,我发现我的文件是32位的,但所有依赖的DLL都是64位的,并且错误消息:找到了具有不同CPU类型的模块。在64位计算机上编译32位非托管DLL

我需要做些什么才能使DLL可用,并且在depends.exe中看不到错误?

回答

1

您需要使用32位Dependency Walker(都可以安装在同一台机器上)。

Dependency Walker不够聪明,无法使用WOW64目录,因此只有在Dependency Walker本身在WOW64内运行时才能找到32位依赖关系。

+0

迷人。你是对的。但是当我尝试在DLL中调用一个函数时,我仍然得到错误8007007E - 我曾希望这是因为64/86不匹配。回到绘图板... – erict

+0

@Erict:应用程序是否加载了32位的DLL? –

+0

我是个白痴。在我将项目转换到64位环境的某个时候,我的输出文件夹从bin \ Debug更改为bin \ x86 \ Debug。我没有注意到这一点,并且postbuild事件将DLL复制到bin \ Debug中。现在一切正常。谢谢! – erict