I have an application, written on c++ and compiled with VS 2010. I need to load .net dll written on C# and compiled for .net 4.0 platform from c++ code and call some functions. I have already done this through C++ CLR and its calling .net functions fine until .net 4.0 is not installed in the system.
When .net 4.0 is not installed any function call raises SEH exception in my c++ code, but library loading is successful. Every time exception code is the same 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:
- Is it possible to determine target .net platform of the loaded dll from C++ code and to determine if such platform installed in the system?
- Maybe there is any other way prevent SEH exception and show human readable error explanation?
Thanks in advance