2010-04-15 65 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#程序集的结构类型,并使用调用函数时。