将C ++ / CLI构建为x86不会产生x86输出dll?

时间:2014-02-26 19:27:48

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

我在Windows 7计算机中使用Visual Studio 2012。 I7处理器。

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

然而,当我构建时,如果我用CorFlags检查生成的dll,它会说:

  

PE:PE32

     

CorFlags:24

     

ILONLY:0

     

32BIT:0

     

签名:1

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

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

我错过了一些额外的配置吗?

1 个答案:

答案 0 :(得分:4)

混合模式组件有点怪癖。 ILONLY旗帜在这里占主导地位。将它设置为0,它告诉CLR程序集包含的内容多于MSIL,它还包含机器代码。这打破了32BIT选项的相关性,只有当进程的位数与文件中机器代码的位数一致时,程序集才能正常工作。

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

查看它