尝试创建COM对象时,“对象变量或未设置块变量”

时间:2008-10-14 20:25:24

标签: com vb6 dcom

我有一个VB6 dll尝试使用以下代码行创建一个COM对象:

Set CreateObj = CreateObject("OPSValuer.OPSValue")

然而,这失败并出现错误“对象变量或未设置块变量”。

我可以在dcomcnfg中看到OPSValuer.OPSValue,它似乎注册正常。有没有人对可能导致问题的原因有任何想法?

4 个答案:

答案 0 :(得分:3)

您尝试实例化的类可能未正确安装或缺少某些依赖项。如果您有权访问OLE视图,则可以尝试在VB之外实例化该类。如果它不会实例化,那么您的安装不正确或缺少依赖项。 OLE View附带Visual Studio,在您的系统上搜索OleView.exe。

它位于我的系统上:D:\ Program Files \ Microsoft Visual Studio 8 \ Common7 \ Tools \ Bin

答案 1 :(得分:2)

DMKing是关于OleView的。同时尝试查看Dependency Walker中的控件,任何缺少的依赖项都应该快速浮出水面。

由于这是一个DCom组件,组件构造函数中可能还有一些失败,如果构造函数中的任何内容失败,您将收到该错误。这是一个本地DCom对象还是在另一层上运行的东西?

而不是CreateObject尝试使用标准New实例化它,看看它是否给你一个不同的错误。添加引用本身可能有助于确定错误。您是否有理由使用后期绑定而不是早期绑定?

答案 2 :(得分:0)

错误可能会在对象初始化例程中抛出。我没有在Google上找到“OPSValuer.OPSValue”让我觉得这是一个遇到错误的自定义代码。

答案 3 :(得分:0)

假设OPSValuer.OPSValue是用VB编写的组件,这可能是该组件的Class_Initialize事件中引发的错误。如果您拥有组件的源代码,则应该很容易调试。