2009-07-29 10 views
7

¿Cuál es la mejor manera de invocar dinámicamente el código no administrado de .NET?Dinámicamente P/Invocando una DLL

Por ejemplo, tengo un número de DLL no administradas con exportaciones comunes de estilo C entre ellas. Me gustaría tomar la ruta a una DLL y luego P/Invocar una función basada en el nombre exportado. No sabría el nombre de la DLL hasta el tiempo de ejecución.

Básicamente, ¿cuál es el equivalente de LoadLibrary y para .NET? (Tengo un código existente que usa estas funciones para lograr el mismo objetivo, totalmente en código no administrado).

Respuesta

0

Una opción que tiene es crear una función nativa que es responsable de cargar la DLL apropiada y la función en la memoria y luego devolver esa función al código administrado en función de su ruta. De esta forma, puede usar el truco GetProcAddress de forma natural y devolver el punto de función. A continuación, puede invocar esta función y obtener un delegado que invocará en la DLL adecuada.

2

Véase también this entrada de blog de Jonathan Swift título llamando dinámicamente una DLL no administrado de .NET

Cuestiones relacionadas