我在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
。请帮帮我。
答案 0 :(得分:0)
我将不得不假设您正在使用托管C ++ ...
不是在托管C ++中重新声明结构,而是从C#程序集引用结构类型,并在调用函数时使用它。