Я хочу подключить метод к C++ событий, написанной в C++ DLLHooking на C++ DLL событие формы C#
C++ сторона #include
extern "C"
{
typedef void (__stdcall *PFN_MYCALLBACK)();
int __stdcall MyUnmanagedApi(PFN_MYCALLBACK callback);
}
C# сторона
public delegate void MyCallback();
[DllImport("data_acquisition_sys.dll")]
public static extern void MyUnmanagedApi(MyCallback callback);
static void Main(string[] args) {
MyUnmanagedApi(
delegate()
{
Console.WriteLine("Called back by unmanaged side");
}
);
}
}
C#
Я следил за http://blogs.msdn.com/b/davidnotario/archive/2006/01/13/512436.aspx
Ошибка
Unhandled Exception: System.EntryPointNotFoundException: Не удается найти точку входа с именем «MyUnmanagedApi» в DLL 'data_acquisition_sys.dll'. в affect_detection_sys.Program.MyUnmanagedApi (MyCallback обратного вызова) в affect_detection_sys.Program.Main (String [] арг) в C: \ Users \ Public \ DOCUME
Существует очень мало доказательств того, что вы фактически экспортировали функцию, никаких признаков __declspec (dllexport) или упоминания файла .def. Используйте dumpbin.exe/exports в DLL, чтобы увидеть, что видит .NET. Использование анонимного метода, подобного этому, также является фатальным, GC будет мусором собирать его, так как он не может видеть собственный код, используя его. –