P / Invoke BSTR из неуправляемого кода - PullRequest
1 голос
/ 23 мая 2011

Какой должна быть подпись VB для неуправляемой функции void PopulateBSTR (BSTR outtring)?

Функция PopulateBSTR выполняет SysAllocString и заполняет строку. Обратите внимание, что неуправляемая подпись имеет аргумент BSTR, а не BSTR *. Я могу упорядочить строку BSTR, используя сигнатуру IntPtr, когда сигнатура C ++ имеет BSTR * в качестве аргумента.

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

Ответы [ 2 ]

0 голосов
/ 25 мая 2012

Необходимо указать CharSet = CharSet.Unicode в списке атрибутов dllimport.Поймай его как StringBuilder, а не как строковый класс.

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

Глядя на PInvoke.net , похоже, вам нужно использовать атрибут MarshallAs , чтобы указать, что его следует рассматривать как BSTR.

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