Crash quando si utilizza C # Assemblea da DLL Managed C ++
Domanda
In un sistema Windows XP, sto scrivendo una libreria Mangaged C ++ che chiama il codice in un C # dell'Assemblea. Purtroppo, non appena comincio riferimento a un simbolo nella C # Assemblea, eseguendo la libreria Managed C ++ non riesce con questo errore (ho copiato questo dalla finestra di incidente XP):
EventType : clr20r3
P1 : treeviewdemo.exe
P2 : 0.0.0.0
P3 : 4a5d6d62
P4 : system.windows.forms
P5 : 2.0.0.0
P6 : 4889dee7
P7 : 12fc
P8 : ac
P9 : system.io.filenotfoundexception
La libreria Manged C ++ è fondamentalmente solo:
#using "C:\\MyCSharpAssembly.dll";
__declspec(dllexport) void callMangagedCode() {
ManagedObject ^o = nullptr;
}
Il '#using' in sé non sembra causare alcun problema, ma non appena comincio usando i simboli costituiscono il C # DLL, ottengo problemi. Qualcuno sa che cosa sta succedendo?
La parte system.io.filenotfoundexception
mi fa pensare che alcune DLL non viene trovato, ma non ho idea di quale o dove sta cercando.
Soluzione
Sono tutte le dipendenze di MyCSharpAssembly.dll
disponibile sullo stesso percorso? Se non si è sicuri, provare a caricare il C-Sharp Assemblea in ILDASM strumento per scoprire quali sono le sue dipendenze.
Come un controllo di integrità, controllare anche che se questo C-Sharp DLL può essere caricata da un altro C-Sharp eseguibile o meno.
Altri suggerimenti
file non trovato?
C # Assemblea non ha trovato?
copiarlo finestre o system32 e avere una prova
se il fallimento, tenta di registrare
Avete accesso al codice sorgente C # assemblee? Si può eseguire il codice gestito C ++ nel debugger? Varrebbe la pena di vedere una traccia dello stack di eccezione, questo potrebbe dare ulteriori suggerimenti su ciò che accade quando si verifica l'eccezione.
avrei il sospetto che l'incidente potrebbe essere correlato al funzionamento che si sta facendo. Come menzionato Aamir, l'altra possibilità potrebbe essere una dipendenza del gruppo C # ...