2010-08-25 17 views
14

Ho un progetto C# 2.0 che è impostato per indirizzare 'Any Cpu', tuttavia fa riferimento a un progetto C++ che sta creando una dll a 32 bit.Come faccio a fare riferimento a una DLL a 32 bit in un progetto a 64 bit?

Quando si tenta di eseguire il mio programma su un computer a 64 bit ottengo il seguente errore:

System.BadImageFormatException was unhandled Message: Could not load file or assembly TreeTMHook, Version=1.0.2889.19619, Culture=neutral, PublicKeyToken=null or one of its dependencies. An attempt was made to load a program with an incorrect format.

Come posso risolvere questo problema?

Aggiornamento

Voglio essere in grado di mantenere il progetto principale come qualsiasi CPU.

Grazie.

+0

Ricordare cosa significa "Qualsiasi CPU". ** Tu ** affermi che il progetto principale funziona ovunque, il che significa che ** tu ** sei responsabile dell'eliminazione di tutte le dipendenze dell'architettura. – MSalters

risposta

13

È necessario creare il progetto .NET come 32 bit (destinazione x86) se si desidera caricare correttamente una DLL a 32 bit su una macchina a 64 bit.

RE: Aggiornamento:

Se si desidera mantenere il progetto come "Qualsiasi CPU", avrete bisogno di un 32 bit e una versione a 64 bit di DLL, e assicurarsi che la versione appropriata viene distribuita con la tua app. Se non è possibile creare l'altro progetto come 64 bit, è necessario creare il progetto .NET solo come 32 bit.

4

È necessario forzare l'esecuzione del progetto EXE in modalità a 32 bit in modo che possa utilizzare quella DLL C++. Progetto + Proprietà, scheda Crea, Piattaforma Target = x86.

1

Si consiglia di dare un'occhiata a questo article spiega perché non è possibile, in breve poiché si tratta di puntatori quando si accede al codice non gestito.

1

Per mantenere il progetto principale come Any Cpu, è necessario fornire sia la versione a 32 e 64 bit del dll, che dovrebbe essere possibile, visto che lo si sta costruendo dal sorgente.

È quindi necessario fornire l'eseguibile con un manifest puntandolo verso destra a seconda della piattaforma.

Problemi correlati