Сигнатура PInvoke и разбалансированный стек - C#
Формулировка задачи:
Здравствуйте.
Я подключаю стороннюю библиотеку и описываю её метод:
Но при попытке вызвать метод возникает исключение:
Проверил, что тип возвращаемых данных и тип параметра правильные. Погуглил, дописал подключение dll вот так:
Всё равно тоже самое. Что ещё следует проверять?
[DllImport(@"CPRGL2.dll")] public static extern long OpenAccess(int AccessHandle);
Вызов функции PInvoke "LaserDevice!LaserDevice.LaserDevice::OpenAccess" разбалансировал стек. Вероятно, это вызвано тем, что управляемая сигнатура PInvoke не совпадает с неуправляемой целевой сигнатурой. Убедитесь, что соглашение о вызовах и параметры сигнатуры PInvoke совпадают с неуправляемой целевой сигнатурой.
[DllImport(@"CPRGL2.dll", CallingConvention=CallingConvention.Cdecl)]
Решение задачи: «Сигнатура PInvoke и разбалансированный стек»
textual
Листинг программы
[StructLayout(LayoutKind.Sequential, Pack=1)]
public class PUNIT_PARAMETER
{
public long IntegrationTime;
public Byte Gain;
public Byte TiggerEdge;
public Byte TiggerMode;
public Byte LDPower;
}