2010-04-15 96 views
0

我在VC++應用程序中使用C#DLL。我有一些在VC + +的細節,如將結構從VC++傳遞到C#

PageNumer 
pageTitle 
PageDesc 
BoxDetail 

我必須將這些傳遞給C#DLL。所以我在VC++中創建了一個結構,然後將其傳遞給C#。但我不能那樣做。請幫幫我。

VC++功能:

struct SCS3OverVwPg 
{ 
__int32 iOvrPgNo;  
char sOvrPgTitle[30]; //OverView Page Title 
}; 


void CToolTab::SendOverview() 
{ 
    SCS3OverVwPg *pOverVw = 0; 
    pOverVw = new SCS3OverVwPg;  
    Globals1::gwtoolbar->SetTree(pOverVw); 
} 

C#功能:

public struct SCS3Over 
{ 
    Int32 iOvrPgNo; 
    char[] sOvrPgTitle; 
} 

public void SetTree(SCS3Over x) 
{ 
    MessageBox.Show("Data received");   

} 

如果我不喜歡這樣,它顯示的錯誤

錯誤C2664:「自定義的Tabcontrol ::工具欄:: SetTree':無法將參數1從'SCS3OverVwPg *'轉換爲'SCS3Over'

如果我將C#DLL中的名稱更改爲SCS3OverwPg,它將顯示error of structure redifinition。請幫幫我。

+0

您的C++代碼是用C++/CLI還是純C++編寫的? – 2010-04-15 06:34:40

+0

在VS2008中,MFC應用程序 – Anu 2010-04-15 07:03:50

回答

0

我會假設你正在使用託管C++ ...

而是在託管C++重新聲明該結構的,只是參考從C#程序集的結構類型,並使用調用函數時。