0

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

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

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

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

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

4

1 回答 1

0

感谢 MSDN 技术支持,我了解到 MFC GUI 不支持 COM 所需的“自由线程”。

于 2013-06-04T20:41:51.973 回答