ExecutionEngineException выдается при вызове собственного кода - PullRequest
0 голосов
/ 17 октября 2010

У меня есть функция, которая экспортируется библиотекой 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 Ответ

0 голосов
/ 17 октября 2010

Функция C не возвращает истинное логическое значение, она возвращает целое число. Вам может понадобиться сделать это правильно .

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

...