2011-11-28 20 views
8

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

+0

¿Ha agregado el dll a las referencias del proyecto? – Tudor

+0

@Tudor Sí (relleno no en blanco) – baruch

Respuesta

6

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.

Cuestiones relacionadas