Я хочу вызвать в C# функцию из неуправляемой библиотеки со следующей подписью:
DLL_EXPORT int xli_open(char *, int , struct t_info *);
В устаревшем коде на Windows 7 функция искажается как:
[DllImport(DRIVER_FILENAME, EntryPoint = "xli_open", CallingConvention = CallingConvention.Cdecl)]
public static extern int xli_open(string device, int hndl, ref t_info tInfo);
Вкл. Windows 10 Я получаю AccessViolationException для вызова функции и импортирую функцию как:
[DllImport(DRIVER_FILENAME, EntryPoint = "xli_open", CallingConvention = CallingConvention.Cdecl)]
public static extern int xli_open(ref string device, int hndl, ref t_info tInfo);
Я больше не получаю AccessViolationException, но кажется, что функция получает пустую строку. Правильно ли объявлено? И почему работает передача параметра ref
(строка не будет передана по ссылке в любом случае?)?