Создание родного DLL

Я подготовю DLL в Родные (C), и я хочу, когда событие происходит, а затем знать мой управляемый код; Как я могу это сделать?

У меня есть родные DLL, и я использовать, что в моем проекте, но причиной некоторых типов являются невыполнимыми в управляемом коде.

Я программист C , и не представить с родной.

Ответ на: "Создание родного DLL"

Количество ответов:2

Если вы хотите обрабатывать Родные события в вашем коде C , то я думаю, что лучше всего написать C '/CLI DLL, который будет работать в качестве промежуточного слоя между C ' Родные DLL и C ' DLL. Таким образом, вы можете обрабатывать события в промежуточной библиотеке и передавать их, чтобы быть захвачены снова управляемых DLL.

Еще один вариант заключается в том, чтобы написать свой родной DLL как COM DLL и поднять COM Диспетчерские события оттуда. Создавая Интероп этого COM DLL, вы можете запечатлеть события непосредственно в вашем C'DLL. Но этот маршрут имеет очень крутой кривой обучения, если вы являются новыми для COM программирования.

Если API вашего родного DLL позволяет зарегистрировать указатель функции в качестве обратного вызова, который будет вызываться при поднятии события, вы можете маршал нормального делегата C ' в качестве указателя функции ( Marshal.GetFunctionPointerForDelegate) and just register the managed delegate via P/Invoke. ) и просто зарегистрировать управляемого делегата через P / Invoke.