combase错误(CoInitialize尚未调用)

时间:2017-10-24 18:44:37

标签: c++ dll com

onecore \ com \ combase \ objact \ _ objact.cxx(812)\ combase.dll!00007FF8BD322169 :(来电者:00007FF8BD320F78)ReturnHr(1)tid(b54)800401F0尚未调用CoInitialize。

我正在使用Visual Studio 2015并且已开始收到以下错误消息。我不是想写dll或使用COM对象或其他什么。这只是一个简单的OpenGL程序。我不知道这个错误消息来自哪里。我该如何摆脱它?

2 个答案:

答案 0 :(得分:2)

您正在隐式使用COM。没有代码,我们不知道。它可能来自shell api,常见文件对话框,操纵杆处理等。

您需要将CoInitialize( 0 );放在某个main函数(或WinMain或wWinMain)的开头,并在函数结束时放置CoUninitialize();。如果您需要使用特定的并发模型,还有CoInitializeEx

CoInitialize description

答案 1 :(得分:0)

我的程序在WinMain中调用CoInitialize(NULL),但是在加载某些DLL(运行后)时,我仍然看到此错误。 但是,在尝试枚举系统中的声卡时,出现了同样的错误。 解决方案是使用CoInitializeEx(NULL,COINIT_MULTITHREADED),这将确保允许从任何线程进行COM调用。