2011-11-28 12 views
8

Ho una soluzione con un progetto di DLL C++ e un progetto C# che lo utilizza. Il problema è che il percorso di costruzione del progetto C++ si trova nella cartella della soluzione e il C# si trova nella cartella bin del progetto (ognuno annidato con debug/release), pertanto non viene trovato da DllImport.
Esiste un modo standard per risolvere il problema?C#/C++ nella stessa soluzione - DllImport non trova DLL

+0

Hai aggiunto la dll ai riferimenti del progetto? – Tudor

+0

@Tudor Sì (non-blank-filler) – baruch

risposta

6

Il modo in cui si dovrebbe fare questo è impostare il percorso di generazione per entrambi i progetti nella stessa directory 'bin' ... preferibilmente uno per la soluzione, non un progetto. Quindi fai in modo che tutti i progetti vengano creati in quella cartella. Puoi cambiarlo dalle impostazioni del Progetto.

Un'altra tecnica consiste nell'utilizzare un passaggio post-generazione per l'applicazione C++ che copia la DLL nella cartella del progetto C#. In questo modo non cambierai alcun percorso. Basta copiare su una DLL. Fai attenzione, però, perché quando pulisci il progetto del file C++, potresti effettivamente avere la copia nella directory bin del progetto C#, lasciandoti grattando la testa sul perché le cose non stiano accadendo come previsto.

In alternativa, è possibile distribuire la DLL C++ su un percorso di sistema (anche come parte di un passaggio post-generazione) ma si avranno gli stessi problemi indicati sopra.

Per il debug, consiglierei questi nell'ordine presentato.

Problemi correlati