На самом деле вы не указали точное сообщение об ошибке и строку, на которой оно появляется.Возможно ли, что вы ошибочно связываетесь с 32-битной версией ItwNidSmart.dll
?
На самом деле ваши P / Invokes неверны, что может быть или не быть причиной вашей проблемы.Наиболее важной ошибкой является то, что GetProcAddress
указывает имя процедуры в виде строки ANSI.Они должны читать:
[DllImport("kernel32", SetLastError=true)]
static extern IntPtr LoadLibrary(string lpFileName);
[DllImport("kernel32", CharSet=CharSet.Ansi, ExactSpelling=true, SetLastError=true)]
static extern UIntPtr GetProcAddress(IntPtr hModule, string procName);
[DllImport("kernel32.dll", SetLastError=true)]
static extern bool FreeLibrary(IntPtr hModule);
Я не уверен, что эти ошибки действительно вызывают проблемы.
РЕДАКТИРОВАТЬ
Выв комментарии укажите, что сбой происходит при вызове LoadLibrary()
.Если это вызывает исключение, то единственное объяснение, которое я могу придумать, состоит в том, что ошибка заключается в DLLMain()
библиотеки DLL, а не в коде C #.Если DLL была неправильной разрядности или не найдена, то LoadLibrary()
вернет NULL
.
Я думаю, что для решения этой проблемы вам нужно обратиться к DLL, а не к коду C #.