“对象变量或With块变量未设置”试图创建COM对象

问题描述:

我有试图创建使用下面的代码线COM对象VB6的DLL时:“对象变量或With块变量未设置”试图创建COM对象

Set CreateObj = CreateObject("OPSValuer.OPSValue") 

然而这个失败,并错误“Object variable or With block variable not set”。

我可以在dcomcnfg中看到OPSValuer.OPSValue,它似乎已经很好地注册了。有没有人有任何想法可能会导致问题?

+0

你能通过展示此问题的最小代码示例吗?我想我知道问题可能是什么,但请提供更多的上下文 – 2008-10-14 20:49:32

DMKing是正确的关于OleView。也可以试着看看Dependency Walker中的控件,任何缺失的依赖关系都应该快速到达表面。

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

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

+0

这是一个本地DCOM对象。我们使用后期绑定,因为包含CreateObject()调用的方法在要实例化的对象的名称中传递(在这种情况下为OPSValuer.OPSValue)。 – 2008-10-15 13:11:59

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

有人就设在这里我的系统上:d:\ Program Files文件\微软的Visual Studio 8个\ Common7 \工具\ BIN

错误可能的对象初始化程序中被抛出。我在Google上没有找到“OPSValuer.OPSValue”,这让我认为这是自定义代码遇到错误。

+0

OPSValuer.OPSValue确实是我们自己的组件。 – 2008-10-15 13:12:39

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