P / вызывать чисто C ++ библиотеку? - PullRequest
5 голосов
/ 01 марта 2010

Возможно ли P / Invoke чистая библиотека C ++, или она должна быть заключена в C?

Ответы [ 2 ]

2 голосов
/ 01 марта 2010

C ++ библиотеки могут быть вызваны P /, но вам нужно будет использовать «зависящий», чтобы найти искаженные имена методов (имена типа «@ 0! Classname @ classname @ zz»), и, например, методы используют вызов «ThisCall» соглашение в p / invoke и передают ссылку на экземпляр в качестве первого аргумента (вы можете сохранить результат конструктора в IntPtr).

1 голос
/ 01 марта 2010

"Чистая" библиотека C ++ будет иметь искаженное имя от компилятора, поэтому будет трудно получить правильное объявление P / Invoke. И метод C получает подчеркивание в начале, которого может не быть в C ++. И методу C ++ нужен этот экземпляр в качестве первого параметра, вы должны будете указать его самостоятельно.

Я думаю, что вам нужно обернуть ваш C ++ API в C-совместимую серию методов.

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