У меня есть DLL, которую я хочу добавить в мой проект C #, и у меня есть некоторые проблемы. Во-первых, моя DLL написана на C ++, и я получил интерфейс одной функции для ее экспорта.
extern "C" __declspec(dllexport) char* sniff()
{
return ps.Sniff();
}
У меня есть экземпляр "ps", который инициализирует сокет при подключении DLL. Дело в том, что мне нужно инициализировать этот экземпляр при вызове моей экспортированной функции. Моя проблема заключается в том, что когда я импортирую его в свой проект C #, моя DLL отключается без видимой причины, и я больше не могу вызывать экспортированную функцию.
Я использую этот синтаксис в моем проекте C #:
[DllImport(@"C:\Documents and Settings\Pat\Bureau\sniffoporn\Release\sniff.dll", EntryPoint = "sniff", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr sniff();
Некоторые важные вещи, которые я попробовал:
- Импортировать DLL в ссылку на проект: невозможно, потому что это не COM-компонент.
- Импортировать DLL вручную, используя LoadLibrary, FreeLibrary и GetProcAddress: тот же результат
- Вызов моей экспортированной функции в цикле: то же самое, но DLL подключается немного дольше, прежде чем отключаться.
Я хотел бы знать, почему моя DLL отсоединяется и как я могу сохранить ее подключенной до конца процесса.
Большое спасибо