After some help and reading, I am sure the concept activation context can be used to solve my problem. In my application, I have to load an unmanaged dll c.dll
by another managed dll b.dll
, which is loaded by a.dll
, which is loaded by app.exe
. The sequence is that
app.exe -> a.dll (managed) -> b.dll (managed) -> c.dll (unmanaged)
I have the source of a.dll
and b.dll
, but app.exe
and c.dll
belongs to the third party. Now, regardless of whether a.exe
loads other versions of c.dll
or not, I have to load my own c.dll
(my c.dll
resides in a different folder with that carried by a.exe
installation).
I used LoadLibraryEx
, but that app.exe have loaded a different of c.dll before I can load my own c.dll. These two c.dll are same name with different versions. Since a different version of c.dll has been loaded, when I called LoadLibraryEx, my c.dll won't be loaded. I need a solution to solve this problem.
How does the concept activation context can be migrated to the .NET environment to solve this problem?
I'm not sure what you mean by activation context.
If you want to load an unmanaged DLL in a managed environment you need to do so via pInvoke:
Also, you will need to free the handle stored in the
IntPtr
returned byLoadLibrary
.