在带有 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 位机器返回成功。