0

VS2010 および Microsoft SDK v7.0a を使用して Win7 SP1 で実行。Win32 コンソール アプリケーション用の VS2010 プロジェクトを作成すると、COM DLL を登録した regsvr32.exe の CreateInstance が成功します。MFC GUI 用の VS2010 プロジェクトを作成すると、同じ CreateInstance が E_NOINTERFACE で失敗します。Unicode とマルチバイトの両方を試しましたが、Win32 コンソール アプリケーションでは両方の方法で動作し、MFC GUI では両方の方法で失敗します。これはどのように可能ですか?

Win32 コンソール アプリケーションで F11 キーを押すと、最終的に CreateInstance が IUnknown の QueryInterface に到達することがわかります [これは成功します]。MFC GUI から F11 キーを押すと、QueryInterface に到達しません。

関連する ADO バージョン/アップグレードについての話を見たことがありますが、Win32 コンソール アプリケーションでは成功し、MFC GUI では失敗する 1 つのシステムを次に示します。どのように?

更新: VS2010 comip.h の代わりに WinDDK comip.h の使用を誤って許可していました。しかし、それを修正した後でも、問題は残ります。

また、64 ビット マシンでコンパイルされた同じ MFC GUI プロジェクトとソースが失敗しないことも発見しました。私の32ビットマシンだけがそうです。どちらも CreateInstance コール スタックで QueryInterface に到達しますが、32 ビット マシンは失敗を返し、64 ビット マシンは成功を返します。

4

1 に答える 1