Tengo una solución con un proyecto C++ dll y un proyecto C# que lo usa. El problema es que la ruta de compilación del proyecto C++ está en la carpeta de soluciones y C# está en la carpeta bin
del proyecto (cada una anidada con depuración/versión), por lo que DllImport
no las encuentra.
¿Hay una manera estándar de arreglar esto?C#/C++ en la misma solución - DllImport no encuentra DLL
Respuesta
La forma en que se supone que debes hacer esto es establecer la ruta de compilación para ambos proyectos en el mismo directorio 'bin' ... preferiblemente uno para la solución, no un proyecto. Luego solo haga que todos los proyectos se creen en esa única carpeta. Puede cambiar eso desde la configuración del Proyecto.
Otra técnica es utilizar un paso posterior a la compilación para la aplicación C++ que copia el archivo DLL a la carpeta del proyecto C#. De esa forma, en realidad no cambias ningún camino. Solo copia sobre un archivo DLL. Tenga cuidado aquí, porque cuando limpia el proyecto del archivo C++, puede que aún tenga la copia en el directorio bin de los proyectos C#, dejándolo a usted preguntándose por qué las cosas no están sucediendo como se esperaba.
Alternativamente, puede implementar la DLL de C++ en una ruta del sistema (también como parte de un paso posterior a la compilación), pero tendrá los mismos problemas que los indicados anteriormente.
Para la depuración, yo recomendaría estos en el orden presentado.
- 1. ¿Dónde DLLImport busca archivos DLL no administrados?
- 2. dllimport no pudo encontrar dll aunque está en la RUTA
- 3. DllImport no puede encontrar dll a pesar de que dll está en la misma carpeta que el ejecutable
- 4. DllImport user32 vs user32.dll
- 5. Agregando la misma referencia "* .dll" a múltiples proyectos en la misma Solución
- 6. El atributo DllImport siempre carga la DLL no administrada
- 7. ¿No se encuentra MSVCP90.dll?
- 8. Visual Studio Project DLL no se está actualizando en el proyecto del sitio web (misma solución)
- 9. Descargar una DLL cargada con DllImport
- 10. símbolo externo no resuelto para __declspec (dllimport) cuando se utiliza dll para exportar la clase
- 11. DllImport, ¿cómo verificar si la DLL está cargada?
- 12. ¿Por qué .NET no encuentra la DLL de OpenSSL.NET?
- 13. dllimport procedimiento
- 14. ¿Por qué un proyecto (exe) no ve el espacio de nombres de otro proyecto (dll) en la misma solución?
- 15. Genera declaraciones C# DLLImport desde un dll nativo
- 16. ¿Usa tareas personalizadas de MSBuild desde la misma solución?
- 17. Asp.Net C# DllImport problema
- 18. __declspec (dllimport/dllexport) y la herencia
- 19. DllImport vs Declare en VB.NET
- 20. Incrustar dll no administrado en un C# dll administrado
- 21. ¿Qué es [DllImport ("QCall")]?
- 22. C++ ejecutable - msvcr100.dll no se encuentra el error
- 23. Asamblea referenciada no encontrada - Cómo obtener todas las DLL incluidas en la solución
- 24. C#: cómo saber la ruta completa de dll utilizada en DllImport?
- 25. DllImport y char *
- 26. Establezca el atributo DllImport dinámicamente
- 27. Uso correcto de DllImport
- 28. No se encuentra el punto de entrada Excepción
- 29. Windows y C++: extern & __declspec (dllimport)
- 30. ¿La DLL siempre tiene la misma dirección base?
¿Ha agregado el dll a las referencias del proyecto? – Tudor
@Tudor Sí (relleno no en blanco) – baruch