2012-03-09 15 views
6

Ho un progetto C++, un progetto C++ \ Cli e un progetto di forme di vinci C#.
Quando accedo al progetto cli dal progetto forme di vincita, posso accedere e utilizzare le funzioni del progetto cli. Ma quando includo le mie intestazioni di progetto cpp nel progetto cli, ottengo questo errore di run time dal mio progetto C# quando accedo al progetto cli.C++/Cli: Impossibile caricare il file o l'assembly X o una delle sue dipendenze. non è una applicazione valida per win32. (Eccezione da HRESULT: 0x800700C1)

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

Questo è l'errore che ho preso:

BadImageFormatException: Impossibile caricare il file o l'assembly X o una delle sue dipendenze. non è una applicazione valida per win32. (Eccezione da HRESULT: 0x800700C1)

mi sono reso conto che #include <boost/thread.hpp> causa il problema

+2

Nel progetto Winforms: Project + Properties, scheda Compile, modifica Platform target a x86. O creare una versione a 64 bit dell'assembly C++/CLI. –

risposta

3

ho trovato la soluzione:

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

In Proprietà di configurazione -> C/C++ -> preprocessore -> Preprocessore Le definizioni aggiungono BOOST_ALL_DYN_LINK per imporre l'utilizzo delle DLL . Inoltre, copiare le DLL necessarie nella directory in cui risiede l'eseguibile . Per esempio. copia boost_thread-vc90-mt-gd-1_XX.dll in MyApp/bin/Debug.

2

È molto probabile che il progetto C++ sia compilato come Win32 e il tuo progetto C# sia AnyCPU eseguito su una macchina a 64 bit o, semplicemente, un assembly x64.

Configurare il progetto C# e C++/CLI per l'architettura x86 di destinazione.

Problemi correlati