C++ 组合数据库错误(尚未调用CoInitialize)
onecore\com\cobase\objact\objact.cxx(812)\cobase.dll!00007FF8BD322169:(调用方:00007FF8BD320F78)尚未调用ReturnHr(1)tid(b54)800401F0协同初始化C++ 组合数据库错误(尚未调用CoInitialize),c++,dll,com,C++,Dll,Com,onecore\com\cobase\objact\objact.cxx(812)\cobase.dll!00007FF8BD322169:(调用方:00007FF8BD320F78)尚未调用ReturnHr(1)tid(b54)800401F0协同初始化 我正在使用Visual Studio 2015,并已开始收到以下错误消息。我不想写dll,也不想使用COM对象或其他东西。这只是一个简单的OpenGL程序。我不知道这个错误消息是从哪里来的。如何摆脱它?您正在隐式使用COM。没有代码,我们就无
我正在使用Visual Studio 2015,并已开始收到以下错误消息。我不想写dll,也不想使用COM对象或其他东西。这只是一个简单的OpenGL程序。我不知道这个错误消息是从哪里来的。如何摆脱它?您正在隐式使用COM。没有代码,我们就无法准确地知道。它可能来自shell api、公共文件对话框、操纵杆处理等 您需要将
CoInitialize(0)代码>在某些主函数(或WinMain或wWinMain)的开头,以及conInitialize()代码>在函数末尾。如果需要使用特定的并发模型,还可以使用CoInitializeEx
我的程序在WinMain中调用CoInitialize(NULL),但在加载一些DLL时(在运行之后),我仍然看到此错误
但是,我在尝试枚举系统中的声卡时也会遇到同样的错误。
解决方案是使用coinitializex(NULL,COINIT\u多线程),这将确保允许从任何线程进行COM调用。请提供代码。检查调试器中的程序。给我们一个机会,帮助我们提供更多信息!代码不会有帮助,因为自从上次运行以来,我没有做任何更改。另外,代码在许多文件中有数千行。我会发布什么代码?在这种情况下,你必须告诉我们更多关于代码结构的信息。见Daniel Sęk的回答。如果你不写更多的东西,你的问题就结束了,这应该不会很奇怪。谢谢,但是我不能发布代码,因为它不会有多大帮助。在许多独立的模块中有成千上万行代码。发布代码也没用。我已经好几个月没有对代码做任何修改了。我最近才回来,发现了这个错误。这没有道理。我想可能是因为我更新了VS2015软件。我确实使用DirectX读取XBox控制器。也许是,谢谢,这个解决方案解决了这个问题。这个警告的后果是什么?除了令人讨厌之外,为什么要抑制警告?如果没有正确设置线程模型,使用COM的组件可能会失败。似乎有些组件只是通过自己调用来纠正缺少的CoInitialize
或coinitializex
。有时您可能会得到冲突的模型,所以最好在应用程序启动时显式地选择它。