我是Visual Studio 2010中项目配置的新手,但是我做了一些research,仍然不能完全弄清楚这个问题。我有一个Visual Studio解决方案,其中包含引用C#DLL的C++ DLL。 C#DLL引用了其他一些DLL,其中一些在我的项目中,而另一些在外部。当我尝试编译C++ DLL时,出现以下警告:



它告诉我去配置管理器来调整我的体系结构。使用平台目标x86设置C#DLL。如果我尝试将其更改为其他任何东西(如Any CPU),它将提示,因为它依赖的外部DLL之一具有平台目标x86。

当我查看Configuration Manager时,它显示了我的C#DLL的平台为x86,以及我的C++项目的平台为Win32。这似乎是正确的设置。当然,我不希望我的C++项目的项目平台设置为x64,这是唯一提供的其他选项。

我在这里做错了什么?

最佳答案

尽管我认为以前可能已经实现了,但新的Visual Studio 11 Beta和.NET 4.5似乎已经引入了此警告。

首先,这实际上只是一个警告。如果您仅处理x86依赖项,那么它不会有任何伤害。当您声明您的项目与“任何CPU”兼容,但您依赖于x86或x64的项目或.dll程序集时,Microsoft只是试图警告您。因为您具有x86依赖性,所以从技术上讲,您的项目因此不兼容“任何CPU”。为了消除警告,您实际上应该将项目从“Any CPU”更改为“x86”。这很容易做到,这里是步骤。

  • 转到“构建|配置管理器”菜单项。
  • 在列表中的Platform下找到您的项目,它将显示“Any CPU”
  • 从下拉列表中选择“任何CPU”选项,然后选择<New..>
  • 在该对话框中,从“新平台”(New Platform)下拉列表中选择x86,并确保在“复制设置自”(Copy settings from)下拉列表中选择了“任何CPU”。
  • 点击确定
  • 您将要同时为调试和发布配置选择x86。

  • 这将使警告消失,并声明您的程序集或项目现在不再与“任何CPU”兼容,而现在特定于x86。如果您要构建具有x64依赖项的64位项目,这也适用。您只需选择x64。

    另请注意,如果项目是纯.NET项目,则它们通常可以与“任何CPU”兼容。仅当您引入针对特定处理器体系结构的依赖项(第三方dll或您自己的C++托管项目)时,才会出现此问题。

    10-04 23:28
    查看更多