ExecutionEngineException выдается при вызове собственного кода
У меня есть функция, которая экспортируется библиотекой C со следующей подписью:
extern "C" BOOL Func()
Функция объявлена в коде VB.NET следующим образом:
<DllImport("mylib.dll", CallingConvention:=CallingConvention.Cdecl)>
Private Shared Function Func() As Boolean
End Function
Проблема в том, что я получаю исключение ExecutionEngineException при вызове функции из кода.NET.
При условии BOOL
typedef'd как int
в этом коде C, объявление должно быть другим? Если так, как я должен объявить это? Как Short
или же Int32
? Нужно ли маршалировать возвращаемое значение?
1 ответ
Функция C не возвращает истинное логическое значение, она возвращает целое число. Вам, возможно, понадобится сделать это правильно.
Изменить: Кроме того, вы должны сделать вашу функцию статичной.