Why is keyhelp.ocx failing in my Visual Studio C++ application?

109 views Asked by At

Using keyhelp.ocx to display popup HtmlHelp in a modern Visual Studio C++ application fails.

I get a COM exception with no sensible error code. Looking at the debug output, there seems to be an Access Violation behind the scenes.

1

There are 1 answers

0
RichieHindle On BEST ANSWER

Your executable is build with Data Execution Prevention enabled, via /NXCOMPAT. That's the default in Visual Studio.

keyhelp.ocx is built using ATL7, which is incompatible with DEP - see http://support.microsoft.com/kb/948468

You need to disable DEP (/NXCOMPAT:NO) for your executable or find an alternative to keyhelp.ocx (I don't know of one).

(Note that's it's possible to enforce DEP system-wide - your code will still fail on such machines.)