2008-11-16 13 views

Respuesta

0

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

1

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í está un artículo que detalla las reglas

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

que he encontrado la forma más sencilla para cargar el archivo DLL se acaba de poner en la misma ubicación que el programa Estoy ejecutando.

+1

Tal vez no entiendo tu respuesta pero no suena bien. Creé una aplicación web asp.net simple que usa el atributo DllImport para llamar a una función exportada simple desde un dll C++ personalizado. Sin actualizar la variable de entorno de ruta, obtengo la excepción "No se puede cargar la DLL". Sin embargo, cuando la variable de entorno de ruta se actualiza para incluir la ruta a dll, puedo llamar a la función externa muy bien. –

+1

Estoy teniendo el mismo problema aquí. si uso DllImport ("sample.dll"), no funcionará. Pero si pruebo DllImport ("C: \\ Somelocation \\ sample.dll"), funciona. – Lance

11

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

Coja Dependecy Walker para verificar la falta de dependencia.

0

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

Cuestiones relacionadas