[解決済み] Visual Studioのコンパイルエラー "mismatch between processor architecture "を修正するにはどうしたらいいですか?
質問
Visual Studio 2010のプロジェクト構成は初めてですが、これまでいくつか 研究 が、この問題がまだよくわかりません。私はC#のDLLを参照するC++のDLLを持つVisual Studioのソリューションを持っています。C#のDLLは、私のプロジェクト内と外部のいくつかの他のDLLを参照しています。C++のDLLをコンパイルしようとすると、次のような警告が表示されます。
警告 MSB3270: ビルドするプロジェクトのプロセッサ・アーキテクチャ "MSIL"と参照する "[内部 C# dll]", "x86" のプロセッサ・アーキテクチャの間にミスマッチが発生しました。
アーキテクチャを揃えるために、構成マネージャに行くように言われました。C# DLL はプラットフォームターゲット x86 で設定されています。これを Any CPU のような他のものに変更しようとすると、外部 DLL の 1 つである それ に依存しており、プラットフォームターゲットがx86である。
構成マネージャを見ると、C# DLL のプラットフォームは x86 で、C++ プロジェクトのプラットフォームは Win32 と表示されています。これは正しい設定のように思えます。確かに、私のC++プロジェクトのプロジェクトにプラットフォームをx64に設定させたくはないのです。
私はここで何を間違えているのでしょうか?
どうすればいいですか?
この警告は、新しい Visual Studio 11 Beta と .NET 4.5 で導入されたようですが、以前から可能だったかも知れませんね。
まず、これは本当にただの警告です。x86の依存関係を扱うだけであれば、何の支障もないはずです。Microsoftは、あなたのプロジェクトが"Any CPU"と互換性があると述べているのに、プロジェクトまたは.dllアセンブリにx86またはx64の依存関係がある場合に警告しようとしているだけなのです。x86 の依存関係があるため、技術的には、プロジェクトは "任意の CPU" と互換性がありません。この警告を消すには、実際にプロジェクトを "Any CPU" から "x86" に変更する必要があります。これは非常に簡単で、以下にその手順を示します。
- ビルド|コンフィギュレーションマネージャー]メニュー項目を開きます。
- リストでプロジェクトを見つけ、プラットフォームの下に"Any CPU"と表示されます。
-
ドロップダウンから"Any CPU"を選択し、次に
<New..>
- そのダイアログから、"New Platform" ドロップダウンから x86 を選択し、"Copy settings from" ドロップダウンで "Any CPU" が選択されていることを確認します。
- OKを押す
- DebugとReleaseの両方の構成でx86を選択することになります。
これにより、警告が消え、アセンブリまたはプロジェクトが "あらゆる CPU" と互換性がなく、x86 固有になったことが示されます。これは、64ビットのプロジェクトをビルドする際に、x64の依存関係を持つ場合にも適用されます。
もう1つ、プロジェクトは、純粋な.NETプロジェクトであれば、通常、"Any CPU"互換にすることが可能です。この問題は、特定のプロセッサ・アーキテクチャをターゲットとする依存関係(サードパーティのDLLまたは独自のC++マネージド・プロジェクト)を導入する場合にのみ発生します。
関連
-
[解決済み] Windowsイベントログで参照される「フレームワークのバージョン」とは何ですか?
-
[解決済み] AssemblyInfo.csは何に使うのですか?
-
[解決済み] gacutil.exeはどこですか?
-
[解決済み] csilogfileは何のためにあるのですか?
-
[解決済み] このコンピュータには、.NET Framework 4.6またはそれ以降の更新プログラムがすでにインストールされています。
-
[解決済み] 文字列から数字を抽出する正規表現
-
[解決済み] Try-catchは私のコードをスピードアップさせるか?
-
[解決済み] Visual Studio CodeとVisual Studioの違いは何ですか?
-
[解決済み] Visual Studioの「Any CPU」ターゲットはどういう意味ですか?
-
[解決済み】Visual Studioでコードを自動フォーマットする方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ServicePointManagerは、*スキームのプロキシをサポートしていません[closed]。
-
[解決済み] Html.BeginForm()にCSSクラスを追加する。
-
[解決済み] SQL Server Compact EditionデータベースのLINQ to SQLで、"Row not found or changed "例外を解決するにはどうすればよいですか?
-
[解決済み] VB.NETで線を引く方法
-
[解決済み] gacutil.exeはどこですか?
-
[解決済み] 権限 '*' を持つ SSL/TLS の安全なチャネルを確立できませんでした。
-
[解決済み] Powershell v3 Invoke-WebRequest HTTPSエラー
-
[解決済み] パッケージのダウングレード警告を検出(dotnet core, vs 2017)
-
[解決済み] LINQクエリでToList()とToArray()のどちらを呼び出すのが良いですか?
-
[解決済み] プライベートメソッドのユニットテストはどのように行うのですか?