Ответ 1
Используйте этот инструмент.
У меня есть сборка .net, написанная на С#, и я ищу для экспорта собственной функции C из сборки.
У меня есть приложение, которое будет выполнять "LoadLibrary()" в любой DLL, найденной в папке "plugin". После загрузки DLL приложение выполняет "GetProcAddress", ища функцию с именем "Register". Приложение ожидает, что эта функция будет следовать за соглашением о вызове C.
Как я могу экспортировать функцию с именем "Register" из моей сборки .net, поэтому я могу успешно подключиться к системе плагинов для этого приложения?
Спасибо, Эндрю
Используйте этот инструмент.
Напишите библиотеку .Net в управляемом С++ и там вы можете экспортировать метод/функцию "Родной".
К сожалению, Microsoft не поддерживает эту функцию, и вам нужно изменить msil после сборки, чтобы разоблачить эти методы. Это возможно, поскольку один парень показал разумное решение на codeproject или здесь, но для этого требуется шаг пост-сборки, и после этого вы сами по себе. Я не знаю, будет ли этот хак работать на .net 4.0 или новее. Надеюсь, Microsoft будет слушать нас и поддерживать эту простую функцию на С#, поскольку поддержка CLR уже существует.
Вы хотите Обратный P/Вызов. Вы фактически не можете внедрить функцию C в dll С#, если это означает функцию, фактически реализованную на C, но, следуя учебным пособиям, указанным на связанной странице, вы можете создать экспорт DLL, который может быть вызван неуправляемым кодом C/С++.