Ho seguito questa eccezione per la scorsa settimana.Come è possibile trovare l'origine di "Una procedura importata da" xxx.dll "non può essere caricata." eccezione?
situazione è:
Ho un'applicazione che è scritto in C# e costruito in Visual Studio 2010. L'applicazione include una DLL che è un involucro di una libreria di codice non gestito. Il codice non gestito è scritto in C++ e integrato in Visual Studio 2008. Questo è necessario perché il codice fa riferimento a librerie aggiuntive (Qt) e il codice target a WinCE versione 5 (necessario a causa di dispositivi supportati nel campo).
Ho provato molti dei suggerimenti che ho visto qui, incluso l'utilizzo di vari walker dipendenti (VS 2008 dipende, dependency_walker e Dependz) e altri strumenti come Reflector e Process Monitor di SysInternals.
Tutti gli strumenti non mostrano alcun problema (Reflector) o vecchie dipendenze che sono obsolete nel mio ambiente (Win 7) come DCOMP.DLL, GPSVC.DLL, & IESHIMS.DLL.
Nel debugger, posso scorrere il mio codice fino a quando non istanzia un oggetto che fa riferimento alla mia DLL Managed Wrapper. Non entra nell'istanza dell'oggetto, ma lancia immediatamente l'eccezione.
In Process Explorer (da SysInternals) È possibile visualizzare la DLL gestita caricata, insieme alle DLL sussidiarie necessarie. In Process Monitor (da SysInternals) al punto del problema non ci sono pile di messaggi non trovati. Fallisce
Qualsiasi idea o idea per trovare questo problema sarebbe apprezzata.
Si sta utilizzando una versione Qt per CE su un computer desktop? Non cercare oltre :) Google "loader snaps" se si desidera una diagnostica. –
In realtà no. Ricostruiamo Qt in entrambe le versioni Windows e Windows CE. Ma il codice che esegue è lo stesso in ciascuno. – user1542042
Vorrei separare i problemi di caricamento delle parti gestite e non gestite prima. Converti il tuo wrapper in uno stub e prova a caricarlo. Carica la tua DLL C++ nel processo nativo e verifica se funzionerà o meno. Pubblicare pezzi di codice del tuo wrapper potrebbe essere molto utile. –