1

この質問がすでに回答されている場合は申し訳ありませんが、見つけることができませんでした。

C++ プログラムの関数が呼び出されたときに C# フォームを開こうとしています (メイン プログラムは C++-cli にあり、フォームは C# にあります。動作を試すためだけに空のフォームです)。私は Visual Studio 2005 を使用しており、ソリューションに両方のプロジェクトがあります。C# プロジェクトは単なるフォームであり、クラス ライブラリとして構成しました。ただし、C++ プログラムの関数に移動するときは、最初に次のように入力します。

int _stdcall Init(void)
{
...
FormProject::Form1 form1;
form1 = new FormProject::Form1::Form1();
form1.something();
...
}

私は C++ の経験がほとんどなく、さまざまな組み合わせを試しましたが、うまくいきませんでした。C++ プロジェクトが CLI と互換性を持つようになりました。必要なものはすでに含まれています:

#using <System.Windows.Forms.dll>
#using <System.dll>

いくつかの大きな間違いがあることは承知していますが、このフォームを実行するだけで十分です。どうもありがとうございました。

編集:すでに参照を追加しました。

4

3 に答える 3

3

C# ライブラリで型を使用する前に、C++/CLI プロジェクトで C# プロジェクトへの参照を追加する必要があります。

于 2009-02-20T15:27:11.387 に答える
3

私があなたを理解していれば、C++/CLI の構文拡張機能を使用して C# オブジェクトをインスタンス化する必要があると思います。たとえば、投稿したコードは次のようになります。

FormProject::Form1^ form1;
form1 = gcnew FormProject::Form1::Form1();  // or FormProject::Form1()
form1->something();

マネージ C++ で新しい WinForms プロジェクトを作成し、生成されたコードで正しい構文を確認することをお勧めします。

于 2009-02-20T15:30:37.993 に答える
0

FormProject への参照を C++ プロジェクトに追加しましたか? それを行った場合、FormProject 名前空間の #using ステートメントを含めましたか?

于 2009-02-20T15:27:16.270 に答える