Как получить доступ к неуправляемым данным из C # - PullRequest
2 голосов
/ 06 августа 2010

У меня есть неуправляемая (C / C ++) DLL, которую мне нужно вызывать из приложения C #.

Вызову DLL необходимо вернуть данные (из класса C ++, созданного DLL) вПриложение C #.

У меня есть контроль над экспортируемой функцией DLL, поэтому я могу при необходимости создать оболочку для класса C ++.Я знаю, как получить доступ к DLL с помощью p / Invoke, поэтому я просто ищу руководство по возврату данных.

Данные, полученные из DLL, представляют собой серию пар ключ-значениепоэтому я думал о возвращении строки JSON и десериализации ее в объект с помощью Json.NET.

Каков предпочтительный способ доступа к данным такого типа из неуправляемого источника из приложения C # / .NET?

Ответы [ 2 ]

2 голосов
/ 06 августа 2010

Если вы можете изменить C ++ DLL, то C ++ / CLI может быть самым чистым. Вы сможете написать набор классов-оболочек .NET непосредственно на C ++, избегая необходимости писать отдельные объявления P / Invoke.

0 голосов
/ 06 августа 2010

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

Если вы хотите попробовать PInvoke, вот несколько ресурсов из MSDN ...

...