J'ai une application, écrite en C++ et compilée avec VS 2010. J'ai besoin de charger .net dll écrit en C# et compilé pour la plate-forme .net 4.0 de C++ code et appelle certaines fonctions. Je l'ai déjà fait par C++ CLR et son. Net fonctionne bien jusqu'à ce que. Net 4.0 n'est pas installé dans le système.C++ CLR chargement .net 4.0 dll lorsque .net 4.0 n'est pas installé
Lorsque .net 4.0 n'est pas installé, tout appel de fonction déclenche une exception SEH dans mon code C++, mais le chargement de la bibliothèque est réussi. Chaque code d'exception de temps est le même 0xE0434F4D.
KERNELBASE.dll!RaiseException() + 0x3d bytes
mscorwks.dll!RaiseTheExceptionInternalOnly() + 0x295 bytes
mscorwks.dll!UnwindAndContinueRethrowHelperAfterCatch() + 0x63 bytes
mscorwks.dll!CorDllMainForThunk() + 0xcd bytes
mscoree.dll!CorDllMainWorkerForThunk() + 0x62 bytes
mscoree.dll!VTableBootstrapThunkInitHelper() + 0x12 bytes
mscoree.dll!VTableBootstrapThunkInitHelperStub() + 0x3e bytes
hs.exe!SrvAuth::PluginProxy::ProxyBody() Line 363 + 0x13 bytes C++
hs.exe!hs::hsThread::InvokableEntry(void * thread_obj=0x000000000024de90) Line 458 C++
msvcr100.dll!_callthreadstartex() Line 314 + 0xd bytes C
msvcr100.dll!_threadstartex(void * ptd=0x0000000000000000) Line 292 + 0x5 bytes C
kernel32.dll!BaseThreadInitThunk() + 0xd bytes
ntdll.dll!RtlUserThreadStart() + 0x21 bytes
Questions:
- Est-il possible de déterminer la plate-forme cible de .net du dll chargé à partir du code C++ et pour déterminer si cette plate-forme installée dans le système?
- Peut-être existe-t-il un autre moyen d'empêcher l'exception SEH et d'afficher une explication d'erreur lisible par l'utilisateur?
Merci à l'avance