есть dll, которая поставляется вместе с неким девайсом, есть в ней функция, описанная как
function InitVideo(MainForm,
VideoControl,
FingerControl:HWND;
msg:pChar;
var buflen:integer;
DeviceList:pChar):integer;stdcall;
//MainForm - handle основного окна, где идет работа с видео,
//VideoControl - handle окна, где может отображаться видеосигнал
//FingerControl - handle окна, где будет отображаться склеенный палец
//msg - имя девайса для старта, буфер для сообщения об ошибке
//(если возвращается <>0), отвести не менее 1000 байт
//buflen:integer;DeviceList:pChar - возвращается список доступных девайсов если pch[0]=0
есть необходимость загрузить эту функцию в приложении на С#. Для этого делаю так:
[DllImport("GetVideo.dll", EntryPoint="InitVideo", SetLastError=true, CharSet=CharSet.Unicode, ExactSpelling=true, CallingConvention=CallingConvention.StdCall)]
public static extern unsafe int InitVideo(void* MainForm, void* VideoControl, void* FingerControl, String msg, int buflen, String devlist);
...
char[] msgA = new char[1024];
char[] devlistA = new char[1024];
String msg = new String(msgA);
String devlist = " "; ";
int err, buflen = 1024, width = 320, height = 240;
if (InitVideo(this.Handle.ToPointer(),pbImage.Handle.ToPointer(),pbImage.Handle.ToPointer(),msg,buflen,devlist)==0)
{//no errror
...
}
при вызове ругается, что
An unhandled exception of type 'System.NullReferenceException' occurred in fpdb_manager.exe
Additional information: Object reference not set to an instance of an object.
перепробовала все варианты, пришедшие в голову по поводу того, что в функцию передавать. Результат один и тот же. Где ошибка? Что смотреть?