【问题标题】:Building C++/CLI as x86 doesn't produce x86 output dll?将 C++/CLI 构建为 x86 不会产生 x86 输出 dll?
【发布时间】:2014-02-27 04:04:04
【问题描述】:

我在 Windows 7 机器上使用 Visual Studio 2012。 I7 处理器。

我有一个托管 C++/CLI 库。该项目还引用了一个 Native C++ 静态库。 我已经为 x86 配置了所有东西。

但是,当我构建时,如果我使用 CorFlags 检查生成的 dll,它会显示:

PE:PE32

CorFlags:24

仅:0

32位:0

签名:1

根据this 的帖子,这意味着我的 dll 是用于 AnyCPU 的吗?我试图找到更多关于如何解释标志的文档,但没有发现任何不同。

我很困惑,如果我使用配置为“x86”的平台构建,那么 32Bit 标志不应该是 1 吗?

我是否缺少一些额外的配置?

【问题讨论】:

    标签: visual-studio-2012 c++-cli


    【解决方案1】:

    对于混合模式程序集来说,这有点奇怪。 ILONLY 标志在这里占主导地位。设置为 0 时,它告诉 CLR 程序集包含的不仅仅是 MSIL,它还包含机器代码。这破坏了 32BIT 选项的相关性,只有当进程的位数与文件中机器代码的位数一致时,程序集才能工作。

    由可执行文件头设置,IMAGE_FILE_HEADER.Machine 确定。就像它对任何包含机器代码的可执行文件一样。 Corflags 不显示,用 dumpbin.exe /headers 可以看到

    【讨论】:

    • 谢谢,我可以检查我是否正确构建了东西。如您所说,在“机器”标签中的“文件头值”中,它表示 x86 或 x64,具体取决于我的构建配置。
    猜你喜欢
    • 2017-09-13
    • 1970-01-01
    • 2012-05-19
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多