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
risposta
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.
Hai aggiunto la dll ai riferimenti del progetto? – Tudor
@Tudor Sì (non-blank-filler) – baruch