Открытие функции C API в файле DLL из С# дает ошибку доступа к памятиC#

Место общения программистов C#
Ответить
Anonymous
 Открытие функции C API в файле DLL из С# дает ошибку доступа к памяти

Сообщение Anonymous »

Объявление C API выглядит следующим образом
include
STATUS LNPUBLIC NSFDbOpen(
const char far *PathName,
DBHANDLE far *rethDB
);

https://opensource.hcltechsw.com/domino ... NSFDbOpen/
[DllImport("nnotes.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int NSFDbOpen(string path, ref IntPtr pHandleDb);

Я пробовал Cdecl и stdcall. Я пробовал ref/out IntPtr и int
Когда я вызываю функцию
int result = NSFDbOpen(dbPath, ref dbHandle);

Я получаю эту ошибку
Изображение

Могу добавить, что я использовал это в Visual Basic 6, и тогда дескриптор был длинным
=== ==Обновление=====
в старом коде это выглядело так это
Declare Private Function WinNSFDbOpen Lib "nnotes" Alias "NSFDbOpen" ( Byval dbname As String, dbhandle As Long ) As Integer

И функция, выполняющая такой вызов
Function apiNSFDbOpen ( Byval dbname As String, dbhandle As Long ) As Integer
apiNSFDbOpen = winNSFDbOpen ( dbname, dbhandle )
End Function


Подробнее здесь: https://stackoverflow.com/questions/792 ... cess-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»