c# c++ notepad++ dllexport

¿Es posible exportar funciones desde una DLL de C#como en VS C++?



notepad++ dllexport (4)

En VS C / C ++ puede usar la extern "C" __declspec(dllexport) -function declaration- .

¿Cómo puedo lograr esto en un dll C #? ¿Hay un código C # equivalente al código anterior?

Editar: Más información

Estoy intentando crear un complemento para Notepad ++ y quiero usar C #, pero la forma más común que he visto hasta ahora es usar el código C ++ heredado con la llamada anterior para exportar algunas de las funciones que Notepad ++ espera importar y llamada. Hay una aplicación de ejemplo que usa C #, pero esto aún requiere una DLL de carga, que supongo que a partir de los comentarios / respuestas a continuación es la única forma de C #.


Exportaciones no gestionadas
https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports

¿Como funciona?

Cree una nueva biblioteca de clases o proceda con una existente. Luego agregue el paquete UnmanagedExports Nuget .

Esto es prácticamente toda la configuración que se requiere.

Ahora puede escribir cualquier tipo de método estático, decorarlo con [DllExport] y usarlo desde el código nativo.
Funciona igual que DllImport, por lo que puede personalizar el cálculo de parámetros / resultados con MarshalAsAttribute .

Durante la compilación, mi tarea modificará el IL para agregar las exportaciones requeridas ...


He visto a gente hacer esto antes, pero requería ildasm, agregando la directiva MSIL .export y luego .export montar. Un programa llamado dll_tool puede hacer estos pasos por usted.

Si desea crear una DLL de modo mixto con exportaciones tanto nativas como administradas, debe utilizar C ++ / CLI, que está especialmente diseñado para este propósito.



Sí, es posible exportar funciones desde un dll de C # de la misma manera que lo hace C ++. Necesita un poco de ayuda de un complemento de Exportaciones no gestionadas (DllExport para .Net) que facilite este proceso, o de un método similar como Exportar funciones en C # / VB.NET a código nativo .

Consulte el Código para exportar C # DLL a Metatrader Build 600+ para ver un ejemplo de uso de la plantilla de proyecto C # de Robert Giesecke para exportaciones no administradas para exportar un C # dll a una aplicación heredada (Metatrader) que tiene una gran similitud con C ++.

Además, puede ser interesante la compatibilidad entre nativos y .NET, aunque está principalmente orientada hacia el acceso al código nativo desde .NET y no al revés.