【问题标题】:compile unmanaged DLL for 32 bits on 64-bit computer在 64 位计算机上为 32 位编译非托管 DLL
【发布时间】:2011-12-22 07:34:51
【问题描述】:

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

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

【问题讨论】:

    标签: visual-studio-2010 visual-c++ 32bit-64bit


    【解决方案1】:

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

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

    【讨论】:

    • 令人着迷。你说得对。但是当我尝试 P/Invoke DLL 中的函数时,我仍然收到错误 8007007E——我希望这是因为 64/86 不匹配。回到绘图板...
    • @Erict:应用程序正在加载 DLL 32 位吗?
    • 我是个白痴。在我将项目转换为 64 位环境期间的某个时间,我的输出文件夹从 bin\Debug 更改为 bin\x86\Debug。我没有注意到这一点,postbuild 事件不断将 DLL 复制到 bin\Debug 中。现在一切正常。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-01-05
    • 2010-11-03
    • 2020-08-30
    • 2017-04-01
    • 1970-01-01
    • 2017-01-21
    • 2011-08-08
    相关资源
    最近更新 更多