将结构从VC ++传递到C#

时间:2010-04-15 05:00:59

标签: c# dll visual-c++ structure

我在VC ++应用程序中使用C#DLL。我在VC ++中有一些细节,如

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 :: ToolBar :: SetTree':无法将参数1从'SCS3OverVwPg *'转换为'SCS3Over'

如果我将C#DLL中的名称更改为SCS3OverwPg,则会显示error of structure redifinition。请帮帮我。

1 个答案:

答案 0 :(得分:0)

我将不得不假设您正在使用托管C ++ ...

不是在托管C ++中重新声明结构,而是从C#程序集引用结构类型,并在调用函数时使用它。