Передача структуры из VC ++ в C # - PullRequest
0 голосов
/ 15 апреля 2010

Я использую C # DLL в приложении VC ++. У меня есть некоторые детали в 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 голосов
/ 15 апреля 2010

Я должен предположить, что вы используете управляемый C ++ ...

Вместо повторного выделения структуры в управляемом C ++ просто укажите ссылку на тип структуры из сборки C # и используйте его при вызове функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...