Выделение массива MFC в C # через P / Invoke - PullRequest
1 голос
/ 01 июля 2011

Я пытаюсь написать класс C # (2010), который позволяет использовать функции, содержащиеся в устаревшей C ++ dll. Функции экспортируются с использованием __stdcall и имеют различные наборы параметров. У меня нет проблем со строками и другими приматами, и я могу вызывать эти функции без проблем.

Проблема в том, что некоторые функции содержат CArray & reference в качестве параметра. Я не могу понять, как упорядочить этот тип данных, или если это вообще возможно.

К сожалению, я не могу изменить устаревший код DLL.

1 Ответ

0 голосов
/ 01 июля 2011

Чтобы справиться с этим правильно, вы можете создать DLL-оболочку (используя ту же версию среды выполнения MFC / C ++, на которую вы хотите вызвать), и убедитесь, что он принимает тот же массив в виде, скажем, традиционного указателя насобственный массив C ++.

Эта DLL-оболочка может быть вызвана из C #.

Вы можете попробовать использовать более новую версию MFC (и использовать C ++ / CLI для маршаллинга), но затемnew CArray может быть двоичным несовместимым с тем, что ожидает устаревшая библиотека.

...