Visual Studio のコンパイル エラー「プロセッサ アーキテクチャの不一致」を修正するにはどうすればよいですか? 質問する

Visual Studio のコンパイル エラー「プロセッサ アーキテクチャの不一致」を修正するにはどうすればよいですか? 質問する

Visual Studio 2010のプロジェクト構成は初めてですが、研究まだこの問題をうまく解決できません。C# DLL を参照する C++ DLL を含む Visual Studio ソリューションがあります。C# DLL は、プロジェクト内の DLL と外部の DLL を参照しています。C++ DLL をコンパイルしようとすると、次の警告が表示されます。

警告 MSB3270: ビルド中のプロジェクトのプロセッサ アーキテクチャ「MSIL」と参照「[内部 C# dll]」、「x86」のプロセッサ アーキテクチャの間に不一致がありました。

アーキテクチャを合わせるには、構成マネージャーに移動するように指示されます。C# DLL は、プラットフォーム ターゲット x86 でセットアップされています。これを Any CPU などの他のものに変更しようとすると、依存する外部 DLL の 1 つにプラットフォーム ターゲット x86 があるため、エラーが発生します

構成マネージャーを見ると、C# DLL のプラットフォームが x86 として表示され、C++ プロジェクトが Win32 として表示されます。これは正しい設定のようです。C++ プロジェクトのプラットフォームが x64 に設定されることは望ましくありません。他には、他に提示されるオプションは x64 しかありません。

ここで何が間違っているのでしょうか?

ベストアンサー1

この警告は新しい Visual Studio 11 Beta および .NET 4.5 で導入されたようですが、以前から可能だった可能性もあります。

まず、これは単なる警告です。x86 の依存関係のみを扱っている場合は、何の問題もありません。Microsoft は、プロジェクトが「任意の CPU」と互換性があると述べているのに、x86 または x64 のプロジェクトまたは .dll アセンブリに依存している場合に警告しようとしているだけです。x86 に依存しているため、技術的にはプロジェクトは「任意の CPU」と互換性がありません。警告を消すには、実際にプロジェクトを「任意の CPU」から「x86」に変更する必要があります。これは非常に簡単です。手順は次のとおりです。

  1. [ビルド | 構成マネージャー] メニュー項目に移動します。
  2. リストでプロジェクトを見つけます。プラットフォームの下に「Any CPU」と表示されます。
  3. ドロップダウンから「任意のCPU」オプションを選択し、<New..>
  4. そのダイアログで、「新しいプラットフォーム」ドロップダウンから x86 を選択し、「設定のコピー元」ドロップダウンで「任意の CPU」が選択されていることを確認します。
  5. OKを押す
  6. デバッグ構成とリリース構成の両方で x86 を選択する必要があります。

これにより、警告が消え、アセンブリまたはプロジェクトが「任意の CPU」互換ではなくなり、x86 固有になったことが示されます。これは、x64 依存関係を持つ 64 ビット プロジェクトをビルドする場合にも適用されます。代わりに x64 を選択するだけです。

もう 1 つ注意すべき点は、プロジェクトが純粋な .NET プロジェクトである場合、通常は「任意の CPU」と互換性があることです。この問題は、特定のプロセッサ アーキテクチャを対象とする依存関係 (サード パーティの dll または独自の C++ 管理プロジェクト) を導入した場合にのみ発生します。

おすすめ記事