Failed CoCreateInstance

Failed CoCreateInstance

本文关键字:CoCreateInstance Failed      更新时间:2023-10-16

我有一个函数,我调用CoCreateInstance。这个函数被调用多次,它的工作,然而有一次CoCreateInstance失败与"坏变量类型"错误。问题是,无论成功还是失败,参数都是相同的。什么会导致这种情况发生?

我也有一个函数在我的代码调用CoCreateInstance(…)。在不改变代码的情况下,一次成功,另一次失败。
但是当查看返回的HRESULT时,结果是内存不足错误,"E_OUTOFMEMORY Ran Out of memory"。我确实做了一些关于这些主题的研究,并发现了以下导致这种情况发生的原因。

    你必须首先调用CoInitialize()

必须在调用CoCreateInstance函数之前调用CoInitialize函数

  • COM对象注册错误
  • 当COM对象(或代理存根)没有正确注册时,通常会发生这种情况。您可以通过尝试实例化对象来使用Oleview工具检查COM对象的注册。

    Oleview.exe包含在Windows SDK中,位置通常在C:Program FilesMicrosoft SDK Windowsv6.0Bin.

    如果没有,您可以尝试安装Microsoft Windows SDK for Windows Server 2008: http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en.

    注意:它不仅适用于Windows 2008,它只是以最近的Windows版本命名,它支持Windows Server 2003;Windows Server 2008;Windows Vista;Windows XP .

  • 不正确的dll版本丢失或损坏
  • 对我来说,这发生在不同的项目配置中,在调试模式下我捕获了异常,但在发布中它没有出现。

    我修复了这个问题。这个调用是从不同的线程发出的。当调用成功时,从主线程调用它。如果失败,则另一个线程是源,并且事先没有调用CoInitialize()。调用CoInitialize解决了这个问题

    相关文章:
    • 没有找到相关文章