2009-02-20 21 views
1

對不起,如果這個問題已經回答,但我找不到它。我試圖打開一個C#窗體,當一個C++程序中的函數被調用(主程序是在C + + - cli中,窗體是在C#中,它是一個空表單,只是爲了嘗試它的工作原理)。我正在使用Visual Studio 2005,並且我的解決方案中都有兩個項目。 C#項目只是一個表單,我已將其配置爲類庫。然而,當我去到C++程序的功能,我在開始的時候輸入:使用C++ - cli,我如何實例化C#庫中定義的WinForms窗體?

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> 

我知道有一些大的錯誤,但我只需要這種形式運行,沒有更多的。非常感謝你。

編輯:我已經添加了參考。

回答

3

如果我理解你,我認爲你需要使用C++/CLI的語法增強來實例化C#對象。例如,您發佈的代碼應該是:

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

我建議你創建託管C++新的WinForms項目,只是看正確的語法生成的代碼。

+0

是的,引用已被添加。我想這兩個是我的問題,#using和CLI語法...... – Hiperi0n 2009-02-20 15:31:49

3

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

0

您是否已將FormProject的引用添加到C++項目中?如果你已經這樣做了,你是否包含了FormProject命名空間的#using語句?

相關問題