Coinitialize has not been called

本文关键字:called been not has Coinitialize | 更新日期: 2023-09-27 17:49:36

我正在从c#应用程序调用COM DLL。DLL是应用程序的SDK。当从应用程序本身调用时,它可以正常工作,所以我很高兴它被安装好了。我试图从c#控制台应用程序调用它,虽然,当我试图创建一个定义在DLL中的对象时,我得到下面的错误:

System.Runtime.InteropServices。COMException: CoInitialize未被初始化调用。(Exception from HRESULT: 0x800401F0 (coe_notinitialized))

如何从c#调用CoInitialize,我应该这样做吗?从我所读到的,这应该已经自动完成了一个c#应用程序。我正在运行的代码是来自供应商的样本文件,所以大概应该是有效的。

请注意,供应商不再可用,所以第一步显然不是一个选项!我真的只是在寻找关于为什么COM DLL在从。net语言调用时会引发此错误的任何一般建议。

Coinitialize has not been called

这是MSDN的解释,它是什么以及如何修复它。实际上,由于某些原因,CoInitialize没有在。net入口点中调用。为了修复它,用STAThread属性标记Windows窗体入口点,如下所示:

[STAThread]
public static void Main()
{
    // code
}