Uso [Dllimport ("DllName.dll")] donde estoy seguro de que existe una ruta de acceso a mi archivo DLL en la variable de entorno PATH del proceso, y todavía I obtener "DllName.dll no se pudo encontrar"dllimport no pudo encontrar dll aunque está en la RUTA
Respuesta
Le sugiero que use FileMon (sysinternals.com) para comprobar si sus suposiciones sobre la ubicación de la biblioteca son correctas.
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.
"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.
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")]
.
- 1. C#/C++ en la misma solución - DllImport no encuentra DLL
- 2. DllImport no puede encontrar dll a pesar de que dll está en la misma carpeta que el ejecutable
- 3. DllImport, ¿cómo verificar si la DLL está cargada?
- 4. ¿Dónde DLLImport busca archivos DLL no administrados?
- 5. El atributo DllImport siempre carga la DLL no administrada
- 6. Bash no puede encontrar adb aunque definitivamente está allí
- 7. DllImport user32 vs user32.dll
- 8. C#: cómo saber la ruta completa de dll utilizada en DllImport?
- 9. Asp.Net C# DllImport problema
- 10. Regsvr32 no puede encontrar el dll en la carpeta actual
- 11. pkg-config no puede encontrar archivos .pc aunque están en la ruta
- 12. .htaccess no funciona aunque allowoverride está habilitado
- 13. "No se pudo encontrar la clase principal"
- 14. Logback: "No se pudo encontrar la biblioteca Janino en la ruta de la clase"
- 15. WindowsError: [Error 126] El módulo especificado no se pudo encontrar
- 16. Descargar una DLL cargada con DllImport
- 17. No se pudo encontrar una parte de la ruta en Windows Azure
- 18. Encontrar la ruta física de un dll ISAPI
- 19. no pudo encontrar la fábrica: javax.faces.context.FacesContextFactory
- 20. No se pudo encontrar la tabla 'usuarios'
- 21. No se pudo localizar compojure en la ruta de clase
- 22. R - no pudo encontrar la función 'derretir()'
- 23. Error SQL Server Compact: no se puede cargar DLL 'sqlceme35.dll'. El módulo especificado no se pudo encontrar
- 24. No se pudo encontrar com_actionbarsherlock.apk
- 25. ¡No se pudo encontrar Library.apk!
- 26. Ruby no puede encontrar las bibliotecas necesarias, aunque está instalada la gema
- 27. com.google.android.gsf no se pudo encontrar el paquete
- 28. PDOException “no pudo encontrar controlador” en php
- 29. No se pudo encontrar la página de diseño "{path}"
- 30. SBT no puede encontrar en el repositorio aunque el archivo está claramente allí
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. –
Estoy teniendo el mismo problema aquí. si uso DllImport ("sample.dll"), no funcionará. Pero si pruebo DllImport ("C: \\ Somelocation \\ sample.dll"), funciona. – Lance