combase 错误(尚未调用 CoInitialize)
combase error (CoInitialize has not been called)
onecore\com\combase\objact\objact.cxx(812)\combase.dll!00007FF8BD322169: (caller: 00007FF8BD320F78) ReturnHr(1) tid(b54) 800401F0 CoInitialize 尚未调用。
我正在使用 Visual Studio 2015 并开始收到以下错误消息。我不是在尝试编写 dll 或使用 COM 对象或其他任何东西。它只是一个简单的 OpenGL 程序。我不知道这个错误信息是从哪里来的。我该如何摆脱它?
您正在隐式使用 COM。没有代码,我们无法准确知道。它可能来自 shell api、通用文件对话框、操纵杆处理等
你需要把CoInitialize( 0 );
放在一些main函数(或WinMain或wWinMain)的开头,CoUninitialize();
放在函数的结尾。如果需要使用特定的并发模型,还有CoInitializeEx
。
我的程序在 WinMain 中调用了 CoInitialize(NULL),但是在加载一些 DLL 时(在 运行 之后)我仍然看到这个错误。
但是,在尝试枚举系统中的声卡时,我遇到了同样的错误。
解决方案是使用 CoInitializeEx(NULL, COINIT_MULTITHREADED),这将确保允许来自任何线程的 COM 调用。
onecore\com\combase\objact\objact.cxx(812)\combase.dll!00007FF8BD322169: (caller: 00007FF8BD320F78) ReturnHr(1) tid(b54) 800401F0 CoInitialize 尚未调用。
我正在使用 Visual Studio 2015 并开始收到以下错误消息。我不是在尝试编写 dll 或使用 COM 对象或其他任何东西。它只是一个简单的 OpenGL 程序。我不知道这个错误信息是从哪里来的。我该如何摆脱它?
您正在隐式使用 COM。没有代码,我们无法准确知道。它可能来自 shell api、通用文件对话框、操纵杆处理等
你需要把CoInitialize( 0 );
放在一些main函数(或WinMain或wWinMain)的开头,CoUninitialize();
放在函数的结尾。如果需要使用特定的并发模型,还有CoInitializeEx
。
我的程序在 WinMain 中调用了 CoInitialize(NULL),但是在加载一些 DLL 时(在 运行 之后)我仍然看到这个错误。 但是,在尝试枚举系统中的声卡时,我遇到了同样的错误。 解决方案是使用 CoInitializeEx(NULL, COINIT_MULTITHREADED),这将确保允许来自任何线程的 COM 调用。