2011-05-13 11 views
13

Tengo un ensamblado .net escrito en C#, y estoy buscando exportar una función C nativa desde el ensamblado.Exportación de una función C nativa desde una DLL .net?

Tengo una aplicación que realizará una 'LoadLibrary()' en cualquier DLL que se encuentre en una carpeta 'plugin'. Después de cargar la DLL, la aplicación realiza una 'GetProcAddress' buscando una función llamada 'Registrarse'. La aplicación espera que esta función siga la convención de llamadas de C.

¿Cómo puedo exportar una función llamada 'Registrar' desde mi ensamblado .net, así puedo conectarme exitosamente con el sistema de complementos para esta aplicación?

Gracias, Andrew

Respuesta

9

Use this tool.

+0

parece que va a funcionar, ¡gracias! – Andrew

+0

¿Qué es esta herramienta? El enlace está bloqueado para mí en mi red. – CathalMF

+1

@CathalMF: https://www.nuget.org/packages/UnmanagedExports – SLaks

0

Lo que queremos es un Reverse P/Invoke. En realidad, no puede insertar una función C en un dll C#, si se refiere a una función realmente implementada en C, pero al seguir los tutoriales proporcionados en la página enlazada puede crear una exportación DLL que pueda invocarse mediante código C/C++ no administrado. .

+0

Ninguna de estas respuestas responde a sus necesidades; él no está usando COM. – SLaks

1

Escriba una biblioteca .Net en Managed C++ y allí puede exportar un método/función "Native".

+0

es posible pero el modo mixto C++ SUCKS! – dmihailescu

1

Lamentablemente, Microsoft no es compatible con esta característica, y usted tiene que cambiar el msil después de la construcción para exponer esos métodos. Es posible que un hombre haya mostrado una solución razonable en codeproject o here, pero requiere un paso posterior a la compilación y usted es independiente después de eso. No sé si este truco funcionará en .NET 4.0 o posterior. Esperamos que Microsoft nos escuche y soporte esta característica simple en C# ya que la compatibilidad con CLR ya está allí.

Cuestiones relacionadas