Вызов функции из DLL - C#
Формулировка задачи:
Всем привет! Есть такая функция в DLL:
Я ее подключаю в C# и пытаюсь вызвать:
В документации написано, что функция ждет именно строку (наименование COM порта). Однако, при попытки передать строку, вызывается ошибка:
Оно и понятно, ведь в .h файле там ожидается char. Пробую передать Char:
Ошибка уже другая:
Пробовал char[] - тоже ошибка.
Тут отечественное ПО и разработка ведется методом тыка. Куда бы еще тыкнуть?
IMPORTDLL int PIRITLIB_CALL openPort(char *fileName, long speed);
[DllImport("PiritLib.dll")] public static extern int openPort(string fileName, long speed); //... openPort("COM5", 57600);
...Вероятно, это вызвано тем, что управляемая сигнатура PInvoke не совпадает с неуправляемой целевой сигнатурой.
[DllImport("PiritLib.dll")] public static extern int openPort(char fileName, long speed); //... openPort('5', 57600);
Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
Решение задачи: «Вызов функции из DLL»
textual
Листинг программы
[DllImport("PiritLib.dll", CallingConvention = CallingConvention.Winapi)] public static extern int openPort(string fileName, int speed); //.. int result = openPort("COM5", 57600);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д