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.
- 1. DllImport non riesce a trovare dll anche se dll si trova nella stessa cartella del file eseguibile
- 2. Aggiunta di un projectRiferimento a un progetto che non si trova nella stessa soluzione
- 3. È l'attributo DllImport che carica sempre la DLL non gestita
- 4. Aggiunta dello stesso riferimento "* .dll" a più progetti nella stessa soluzione
- 5. py2exe non trova msvcp90.dll
- 6. condividi stringhe di connessione con più progetti nella stessa soluzione
- 7. Trova duplicati nella stessa tabella in MySQL
- 8. Progetti MVC e Web Api nella stessa soluzione
- 9. Perché un progetto (exe) non vede lo spazio dei nomi di un altro progetto (dll) nella stessa soluzione?
- 10. Asp.Net C# DllImport problem
- 11. Che cos'è [DllImport ("QCall")]?
- 12. Imposta dinamicamente l'attributo DllImport
- 13. DllImport, come controllare se la DLL è stata caricata?
- 14. Gestire progetti C# e VB.net nella stessa soluzione
- 15. Come utilizzare NLog da più progetti nella stessa soluzione
- 16. Direzione eventi del mouse [DllImport ("user32.dll")] clic, doppio clic
- 17. Modelli per mescolare F # e C# nella stessa soluzione
- 18. DllImport e char *
- 19. Genera dichiarazioni C# DLLImport da una dll nativa
- 20. Prova non cattura un'eccezione in funzione DllImport
- 21. __declspec (dllimport) come caricare biblioteca
- 22. Uso corretto di DllImport
- 23. __declspec (dllimport/dllexport) ed eredità
- 24. Riferimento all'assenza non trovato - Come ottenere tutte le DLL incluse nella soluzione
- 25. Perché non è consigliabile miscelare VB.Net e C# nella stessa soluzione?
- 26. Soluzione C# Visual Studio in una DLL
- 27. Memorizzazione di dll di riferimento nella cartella soluzione di Visual Studio
- 28. funzione booleana C# DllImport con C++ non tornare correttamente
- 29. Macro per switch dllexport/dllimport
- 30. Segfault quando import_array non si trova nella stessa unità di traduzione
Hai aggiunto la dll ai riferimenti del progetto? – Tudor
@Tudor Sì (non-blank-filler) – baruch