簡體   English   中英

使用C ++-cli,如何實例化C#庫中定義的WinForms表單?

[英]Using C++-cli, how can I instantiate WinForms form defined in C# library?

很抱歉,如果您已經回答了這個問題,但找不到。

我正在嘗試在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>

我知道這里有一些大錯誤,但我只需要運行此表單即可,不再需要。 非常感謝你。

編輯:我已經添加了引用。

在使用C#庫中的類型之前,C ++ / CLI項目將需要添加對C#項目的引用。

如果您了解我的話,我認為您需要使用C ++ / CLI的語法增強實例化C#對象。 例如,您發布的代碼應為:

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

我建議您在托管C ++中創建一個新的WinForms項目,並僅查看生成的代碼以獲取正確的語法。

您是否在C ++項目中添加了對FormProject的引用? 如果這樣做了,您是否為FormProject命名空間添加了#using語句?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM