Сигнатура PInvoke и разбалансированный стек - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Я подключаю стороннюю библиотеку и описываю её метод:
[DllImport(@"CPRGL2.dll")]
public static extern long OpenAccess(int AccessHandle);
Но при попытке вызвать метод возникает исключение:
Вызов функции PInvoke "LaserDevice!LaserDevice.LaserDevice::OpenAccess" разбалансировал стек. Вероятно, это вызвано тем, что управляемая сигнатура PInvoke не совпадает с неуправляемой целевой сигнатурой. Убедитесь, что соглашение о вызовах и параметры сигнатуры PInvoke совпадают с неуправляемой целевой сигнатурой.
Проверил, что тип возвращаемых данных и тип параметра правильные. Погуглил, дописал подключение dll вот так:
[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;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы