Экспорт родной функции C из .net DLL?

У меня есть сборка .net, написанная на С#, и я ищу для экспорта собственной функции C из сборки.

У меня есть приложение, которое будет выполнять "LoadLibrary()" в любой DLL, найденной в папке "plugin". После загрузки DLL приложение выполняет "GetProcAddress", ища функцию с именем "Register". Приложение ожидает, что эта функция будет следовать за соглашением о вызове C.

Как я могу экспортировать функцию с именем "Register" из моей сборки .net, поэтому я могу успешно подключиться к системе плагинов для этого приложения?

Спасибо, Эндрю

Ответы

Ответ 2

Напишите библиотеку .Net в управляемом С++ и там вы можете экспортировать метод/функцию "Родной".

Ответ 3

К сожалению, Microsoft не поддерживает эту функцию, и вам нужно изменить msil после сборки, чтобы разоблачить эти методы. Это возможно, поскольку один парень показал разумное решение на codeproject или здесь, но для этого требуется шаг пост-сборки, и после этого вы сами по себе. Я не знаю, будет ли этот хак работать на .net 4.0 или новее. Надеюсь, Microsoft будет слушать нас и поддерживать эту простую функцию на С#, поскольку поддержка CLR уже существует.

Ответ 4

Вы хотите Обратный P/Вызов. Вы фактически не можете внедрить функцию C в dll С#, если это означает функцию, фактически реализованную на C, но, следуя учебным пособиям, указанным на связанной странице, вы можете создать экспорт DLL, который может быть вызван неуправляемым кодом C/С++.