dll path pinvoke dllimport

dllimport c#



dllimport no pudo localizar dll aunque está en la RUTA (4)

Uso [Dllimport ("DllName.dll")] donde estoy seguro de que existe una ruta de acceso a mi dll en la variable de entorno PATH del proceso, y sigo sin obtener "DllName.dll no se pudo encontrar"


DllImport no consulta la variable de entorno PATH al cargar las DLL. Estoy bastante seguro de que DllImport sigue las reglas estándar para cargar una DLL nativa en un programa nativo cuando se hace referencia a la DLL por su nombre. Aquí hay un artículo que detalla esas reglas

http://msdn.microsoft.com/en-us/library/ms682586.aspx

Descubrí que la forma más sencilla de cargar el archivo DLL es colocarlo en la misma ubicación que el programa que estoy ejecutando.


Le sugiero que use FileMon (sysinternals.com) para verificar si sus suposiciones sobre la ubicación de la biblioteca son correctas.


"DllName.dll no se pudo encontrar" también podría significar que DllImport no ha encontrado una de las dependencias de DllName.dll.

Coge a Dependecy Walker para verificar qué dependencia te falta.


Utilicé const string lcms2Path = "C://lcms2.dll"; en mi aplicación C # por más tiempo. Pero finalmente movió la DLL a la carpeta BIN y esto funciona perfectamente [DllImport("lcms2.dll")] .