2012-03-09 12 views
6

Tengo un proyecto de C++, un proyecto de C++ \ Cli y un proyecto de formularios C# win.
Cuando accedo al proyecto cli desde el proyecto win forms, puedo acceder y usar las funciones del proyecto cli. Pero cuando incluyo mis encabezados de proyecto cpp en el proyecto cli, obtengo este error de tiempo de ejecución de mi proyecto C# cuando ingreso al proyecto cli.C++/Cli: No se pudo cargar el archivo o ensamblado X o una de sus dependencias. no es una aplicación win32 válida. (Excepción de HRESULT: 0x800700C1)

CliWrapper.Func meta = new CliWrapper.Func(); 

Este es el error que he tomado:

BadImageFormatException: No se pudo cargar el archivo o ensamblado X o una de sus dependencias. no es una aplicación win32 válida. (Excepción de HRESULT: 0x800700C1)

me di cuenta que #include <boost/thread.hpp> hace que el problema

+2

En su proyecto de Winforms: Proyecto + Propiedades, pestaña Compilar, cambie el destino de la plataforma a x86. O crea una versión de 64 bits del ensamblado C++/CLI. –

Respuesta

3

he encontrado la solución:

http://marc.info/?l=boost-users&m=123425857320026

En Propiedades de Configuración -> C/C++ -> preprocesador -> Preprocesador Las definiciones agregan BOOST_ALL_DYN_LINK para forzar el uso de las DLL . Además, copie los archivos DLL necesarios en el directorio donde reside el ejecutable . P.ej. Copie boost_thread-vc90-mt-gd-1_XX.dll al MyApp/bin/Debug.

2

Es muy probable que su proyecto C++ esté compilado como Win32 y su proyecto C# sea AnyCPU ejecutado en una máquina de 64 bits o, simplemente, un ensamblado x64.

Configure su proyecto C# y C++/CLI para orientar la arquitectura x86.

Cuestiones relacionadas