Передать строку в C ++ COM DLL из функции C #

Функциональный интерфейс DLL;

Я думаю, что в DLL функция выглядит так, с типом данных BSTR

CustomConvert(BSTR dataStr)

{........}

Интерфейс DLL:

CustomConvert(IntPtr dataStr)    //Returns strings

Данные, которые мне нужно передать, примерно такие:

string strTemp = "pŒ®í§…Êtf°B²bßZÃQô"; // something like this
obj.CustomConvert(strTemp);

Но я получаю исключение «строка» не может преобразовать в «System.IntPtr»;
После поиска в интернете я нашел что-то подобное.

obj.CustomConvert(System.Runtime.InteropServices.Marshal.StringToBSTR(strTemp));

Но System.Runtime.InteropServices.Marshal.StringToBSTR (strTemp) преобразует strTemp в числовые числа, например, 2035295. Но мне нужно передать фактическое значение в strTemp.

Любая помощь или предложения?

0

Решение

Пройти BSTR Вы можете сделать что-то вроде:

public static extern void CustomConvert([MarshalAs(UnmanagedType.BStr)] string dataStr);

а затем передать string напрямую, ничего не делая.

Обратите внимание, что в CustomConvert ты не должен освобождать BSTRпотому что он «принадлежит» C #.

1

Другие решения


По вопросам рекламы [email protected]