Разбор объекта C # в объект C ++ - PullRequest
0 голосов
/ 18 мая 2011

Мне нужно использовать DLL, написанную на C ++, в приложении C #, в DLL есть метод, который получает объект, объявленный в C ++, и я не знаю, как проанализировать эквивалентный объект, созданный в C #, для функции из библиотеки DLL

Может ли кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 18 мая 2011

Вам потребуется использовать пространство имен System.Runtime.InteropServices с Platform Invoke, если код c ++ не управляется или COM.Вам нужно будет определить структуру в вашем приложении на C # и передать объект любого типа, которым является ваша структура, в метод, который вы используете с помощью Platform Invoke.Чтобы рассказать вам больше, мне нужно увидеть несколько файлов заголовков.

Вот пример:

c ++ header:

struct MyStruct
{
   int size;
   char* data;
}

bool MethodToInvoke(MyStruct* obj);

c # декларации:

struct MyStruct
{
  int size;
  string data; 
}

[DllImport("YourDllHere.dll")]
static extern bool MethodToInvoke(ref MyStruct obj);

Конечно, это может быть намного сложнее, но это общая идея.

Это может и может стать очень неприятным, когда вам приходится беспокоиться о вызовах соглашений и маршалинг массивов.Независимо от того, мир должен видеть какой-то код от вас.

...