2009-02-02 10 views
5

He creado un dll usando C++ administrado. Ahora estoy tratando de usarlo desde C#. He agregado el objeto para proyectar referencias. El navegador de objetos muestra correctamente el objeto en el dll, la ruta al dll en el navegador de objetos corresponde a la ruta real.Uso de dll de C++ administrado desde C#

Sin embargo, cuando ejecuto el programa de C# se queja:

Excepción no controlada: System.IO.FileNotFoundException: El módulo especificado no podía ser encontrado . (Excepción de HRESULT: 0x8007007E)

¿Alguna idea de qué más hay que hacer?

Gracias.

+0

¿Podemos ver algún código aquí? –

Respuesta

6

Creo que le faltan las otras asambleas o referencias de dll por su ensamblado C++ administrado.

+0

Es cierto que uno de los dlls utilizados no estaba en el camino. Gracias. –

0

¿Su ensamblado C++ administrado tiene otras dependencias, incluidas las DLL no administradas? Verá este error en el tiempo de ejecución si su ensamblado al que se hace referencia no puede cargar una dependencia.

0

¿Está ejecutando la aplicación en versión en una máquina sin VS instalado?

me pregunto porque me encontré con un problema similar aquí: Mixed Mode Library and CRT Dependencies - HELP

si se desplaza hacia abajo a mi respuesta se puede ver lo que hice eso me ayudó.

0

Compruebe que el conjunto C++ esté presente en la misma carpeta que su programa C#. Debe copiarse automáticamente si la propiedad 'Copiar local' está establecida en verdadero (en la referencia al dll C++ en su aplicación C#). Si el dll C++ está allí, el problema más probable es que el dll C++ dependa de otro dll no administrado que no se pueda encontrar (es decir, C# no los copiará en la carpeta de la aplicación porque no conoce las referencias no administradas) Puede usar DependencyWalker en C++ dll para verificar si faltan dependencias.

Otro problema probable podría ser un problema con las DLL de tiempo de ejecución de MSVC. ver si DependencyWalker se queja de archivos perdidos MSVCR * .dll, MSVCP * .dll etc ....

Cuestiones relacionadas