Функциональный интерфейс 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.
Любая помощь или предложения?
Пройти BSTR
Вы можете сделать что-то вроде:
public static extern void CustomConvert([MarshalAs(UnmanagedType.BStr)] string dataStr);
а затем передать string
напрямую, ничего не делая.
Обратите внимание, что в CustomConvert
ты не должен освобождать BSTR
потому что он «принадлежит» C #.