C++ &引用;“协同初始化失败”;当一个函数(来自库)包含在VC++;MFC项目
我知道这有点含糊不清,我只是在这里寻找一般的可能性,让我走上正确的轨道 我在MFC对话框程序中包含了两个lib和它们的.h,并编译了它,没问题。当我从一个lib调用函数时,它会弹出一个对话框,上面写着“Com错误”“CoInitialize失败”。这不是我真正调用函数的时候,而是程序开始运行的时候。我的假设是,当它看到函数时,它实际上在lib中调用,而当它看到函数时,可能会在我的MFC程序中的函数之前调用一个CoInit,从而产生冲突 在代码中,它似乎将此应用于CDialog::DoModal 我总是可以补充更多的细节,我只是希望被引导到正确的方向。提前非常感谢您的帮助 编辑:C++ &引用;“协同初始化失败”;当一个函数(来自库)包含在VC++;MFC项目,c++,windows,visual-studio,mfc,C++,Windows,Visual Studio,Mfc,我知道这有点含糊不清,我只是在这里寻找一般的可能性,让我走上正确的轨道 我在MFC对话框程序中包含了两个lib和它们的.h,并编译了它,没问题。当我从一个lib调用函数时,它会弹出一个对话框,上面写着“Com错误”“CoInitialize失败”。这不是我真正调用函数的时候,而是程序开始运行的时候。我的假设是,当它看到函数时,它实际上在lib中调用,而当它看到函数时,可能会在我的MFC程序中的函数之前调用一个CoInit,从而产生冲突 在代码中,它似乎将此应用于CDialog::DoModal
问题是,我不知道DLL在哪里调用CoInitialize。我真的不能发布代码,因为代码太多了,即使是一个简单的程序。我将尝试dependency walker并查看我的InitInstance。。。还有其他建议吗?非常感谢各位一个好的方向是添加更多细节,特别是如果您有这些细节,比如CoInitialize返回的HRESULT是哪一个
我的猜测是这样的库有一个静态初始化,如果dll中的函数没有被调用,链接器就会丢弃它们,但是如果至少调用了一个函数,那么静态初始化器就会被链接。一个好的方向是添加更多的细节,特别是如果你有它们,比如,CoInitialize返回的HRESULT是哪个
我的猜测是,这样的库有一个静态初始化,如果dll中没有调用任何函数,链接器就会丢弃它们,但是如果至少调用了一个函数,那么静态初始化器就会被链接。尝试添加您自己对CoInitializeEx的调用,并确保您使用的是STA(SingleThreadedPartment)主线程中的线程
很可能有人正在将您的主线程设置为MTA,但您的库需要STA,因此它的CoInitialize调用失败。尝试添加您自己对CoInitializeX的调用,并确保您在主线程中使用STA(SingleThreadedPartment)线程
很可能有人正在将您的主线程设置为MTA,但您的库需要STA,因此它的CoInitialize调用失败。您应该在应用程序InitInstance()中调用CoInitialize。然后它应该在调用DoModal()之前执行
可能是此错误消息并不表示lib试图调用CoInitialize本身,而是尝试了其他COM调用,并且从它在那里收到的错误推断CoInitialize没有被您调用。您应该在应用程序InitInstance()中调用CoInitialize。然后它应该在调用DoModal()之前执行
这可能是因为此错误消息并不表示库试图调用CoInitialize本身,而是尝试了其他COM调用,并且从它在那里收到的错误推断出CoInitialize没有被您调用。一个常见错误是,如果引用的DLL丢失,那么在调用CoInitialize时,它会尝试加载DLL失败的原因是好的旧的失败。尝试使用dependency walker并检查您可能丢失的任何DLL。一个常见错误是,如果引用的DLL丢失,那么当调用协同初始化时,它会尝试加载DLL,并以良好的旧E_FAIL失败。尝试使用dependency walker并检查您可能遗漏的任何DLL。您可以通过在同一DLL上设置断点来找出谁在调用CoInitialize 这就是你使用的方法 首先使用gflags.exe为您的exe启用启动调试器选项 为此
希望它对您有所帮助您可以通过在同一页上设置断点来找出谁在调用CoInitialize 这就是你使用的方法 首先使用gflags.exe为您的exe启用启动调试器选项 为此
希望它能帮助您用实际的源代码调试这样的问题总是最容易的,尤其是您可以创建的显示问题的最小示例。“最容易调试”适用于那些没有看到源代码的人,而是依赖于你的描述。用实际的源代码调试这样的问题总是最容易的,尤其是你能创建的显示问题的最小示例。“最容易调试”为那些没有看到来源,而是依赖于你描述的人。