私は、.NET アプリケーション、特に混合アプリケーションを作成するのが初めてです。
最近、(管理されていない) C++ (MS Visual Studio 2010 の下) で、32 ビットと 64 ビットの両方のコンパイルをサポートするクライアント用の (静的) ライブラリ セットを作成しました。 . (内部的に、この機能は、OpenGL、boost、glm などの他のさまざまなサードパーティ ライブラリを使用しています)
今、彼は、C# アプリケーションでカスタム コントロールとして提供した機能の一部も使用できるようにしたいと考えています。
そこで、C++/CLI を使用して CLR をサポートする dll を作成し、C++/CLI を使用して機能のラッパー クラスを作成し、パブリックな (したがって外部からアクセスできる) カスタム WPF コントロールを作成しました。 32 および 64 ビット。
次に、テストのために、32 ビットまたは 64 ビットでビルドでき、DLL からコントロールを正常にロードできる単純な C# アプリケーションを作成しました (C# は初めてなので、これは非常に単純です)。そして、期待されていることを実行します。
私が今抱えている問題は、単一の実行可能ファイルを「任意の CPU」としてのみ配布できるようにしたいということです。これは、起動された場所に応じて適切なコード (つまり、32 ビットまたは 64 ビット) をロードする必要があります。
そこで、C# テスト プロジェクトに「任意の CPU」構成を追加し、「ビルド」タブの「プラットフォーム ターゲット」を「任意の CPU」に設定しました。しかし、現在、構成マネージャーの下で、他のプロジェクト (つまり、C++/CLI 混合モード dll によって消費される C++ 静的ライブラリ) に設定するプラットフォームがわかりません。したがって、テストのために x64 のままにしましたが、ビルドすると次の警告が表示されます。
Warning MSB3270: There was a mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference "(name of my 64 bit dll)", "AMD64". <br />
This mismatch may cause runtime failures. Please consider changing the targeted processor architecture of your project through the Configuration Manager so as to align the processor architectures between your project and references, or take a dependency on references with a processor architecture that matches the targeted processor architecture of your project.
ただし、その警告が表示されても問題なく動作します。他のプロジェクトを「Win32」に設定すると同じ警告が表示され、代わりに「x86」に言及するだけですが、その場合、起動時に「PresentationCore.dll で「System.BadImageFormatException」タイプの未処理の例外が発生したという例外がスローされます。 "
それで、私はそれを何に変更する必要がありますか?実行可能ファイルをロードしてから、ロードする dll を決定するにはどうすればよいですか? どのように進めて、要求された方法で動作させるのか本当にわかりません。