使用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位机器返回成功。
答案 0 :(得分:0)
由于MSDN技术支持,我得到了启发,MFC GUI不支持COM所需的“免费线程”。