onecore \ com \ combase \ objact \ _ objact.cxx(812)\ combase.dll!00007FF8BD322169 :(来电者:00007FF8BD320F78)ReturnHr(1)tid(b54)800401F0尚未调用CoInitialize。
我正在使用Visual Studio 2015并且已开始收到以下错误消息。我不是想写dll或使用COM对象或其他什么。这只是一个简单的OpenGL程序。我不知道这个错误消息来自哪里。我该如何摆脱它?
答案 0 :(得分:2)
您正在隐式使用COM。没有代码,我们不知道。它可能来自shell api,常见文件对话框,操纵杆处理等。
您需要将CoInitialize( 0 );
放在某个main函数(或WinMain或wWinMain)的开头,并在函数结束时放置CoUninitialize();
。如果您需要使用特定的并发模型,还有CoInitializeEx
。
答案 1 :(得分:0)
我的程序在WinMain中调用CoInitialize(NULL),但是在加载某些DLL(运行后)时,我仍然看到此错误。 但是,在尝试枚举系统中的声卡时,出现了同样的错误。 解决方案是使用CoInitializeEx(NULL,COINIT_MULTITHREADED),这将确保允许从任何线程进行COM调用。