I have a COM file in a project that when I run on Windows XP without IE 7 installed, installs correctly. When I run this on Windows XP with IE 7.0 installed then the ocx file will not register properly due to a missing dependency - dwmapi.dll.


Looking at the file in dependency walker shows that this function is called from IEFRAME.DLL. The error message states that At least one module has an unresolved import due to a missing export function in an implicitly dependent module.

Q: does this message mean that IEFRAME.DLL is calling the function implicitly on XP when it should not

As I look up through the tree of depdency I see that the ultimate cause of the problem is our call to a function in mfc42 which then cascades down into IEFRAME.DLL.


So, is there a way other than uninstalling IE7 for our customers to resolve this dependency Is there something we can do from within our development environment to prevent this explicit link

So far I have not come up with much, so any help is appreciated.

Re: Visual C++ Language dwmapi dependency when IE7 is installed

Joe Hegarty UK

As far as I know it's a delay-load dependency used for implementing the Aero/Glass stuff on Vista which is obviously why it doesn't exist on XP.

There has been alot of discussion about this issue on other forums and people seem to be arguing about it's root cause.

"Basically the problem is, if an application or dll is setup to resolve everything before it runs (i.e. ignore the delay loaded aspect) then it will fail, this is a minority of application and dll's but is a valid runtime option. If on the other hand it is delay linked, it will not ever hit this bug."

Might be useful. You can find the thread I've been reading at: http://episteme.arstechnica.com/eve/forums/a/tpc/f/99609816/m/494009191831

Re: Visual C++ Language dwmapi dependency when IE7 is installed


I have figured out my problem. In the process of updating the installation one of the files that should have been updated did not get setup properly in InstallShield and so the OCX and supporting DLL were out of sync and thus the error occured.

The dwmapi dependency was a red-herring :)