E_NOINTERFACE用于MFC GUI,不适用于Win32控制台应用程序



运行在Win7 SP1与VS2010和微软SDK v7.0a。如果我为Win32控制台应用程序创建VS2010项目,regsvr32.exe注册的COM DLL上的CreateInstance会成功。如果我为MFC GUI创建VS2010项目,则相同的CreateInstance会因E_NOINTERFACE而失败。已经尝试过Unicode和多字节,Win32控制台应用程序的两种方式,失败的两种方式的MFC GUI。这怎么可能呢?

如果我通过Win32控制台应用程序F11,我最终看到CreateInstance在IUnknown上获得QueryInterface[成功]。如果我F11通过MFC GUI,它永远不会到达QueryInterface。

我看过一些关于ADO版本/升级的相关讨论,但这里有一个系统在Win32控制台应用程序中成功,而在MFC GUI中失败。如何?

更新:我错误地允许使用WinDDK编译.h而不是VS2010编译.h。但是,即使在纠正了这一点之后,问题仍然存在。

还发现在64位机器上编译相同的MFC GUI项目和源代码不会失败。只有我的32位机器可以。两者都到达CreateInstance调用堆栈中的QueryInterface,但是32位机器返回失败,而64位机器返回成功。

感谢MSDN技术支持,我得知MFC gui不支持COM要求的"自由线程"。