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 не возвращает истинное логическое значение, она возвращает целое число. Вам, возможно, понадобится сделать это правильно.

Изменить: Кроме того, вы должны сделать вашу функцию статичной.

Другие вопросы по тегам