I have a program A.exe which is linked dynamically with a.dll.
a.dll is a 3rd party DLL that is linked with the /FIXED option. I know this because its DLL Characteristics is 0 when I see it with dumpbin.
When I start A.exe from Explorer, nothing bad happens, and it seems the loader carefully rebases other DLLs.
But, when I want to start A.exe from another program B.exe, and use CreateProcess() or ShellExecute(), A.exe is not opened and an error appears in Windows Event Viewer:
Critical Error: invalid base addr., GetlastError: 487.
I know the problem might be solved by using Rebase.exe and rebasing all DLLs, but why is there no problem when I open A.exe from Explorer? How can I resolve the problem programmatically in my code?
I don't have access to the DLL provider.