0

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

Set CreateObj = CreateObject("OPSValuer.OPSValue")

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

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

4

4 回答 4

3

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

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

于 2008-10-14T21:13:19.130 回答
2

DMKing 对 OleView 的看法是正确的。还可以尝试查看Dependency Walker中的控件,任何缺少的依赖项都应该很快浮出水面。

由于这是一个 DCom 组件,因此组件构造函数中也可能出现故障,如果构造函数中出现任何故障,您将收到该错误。这是本地 DCom 对象还是在另一层上运行的东西?

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

于 2008-10-15T01:12:57.787 回答
0

该错误可能会在对象初始化例程中引发。我在 Google 上找不到“OPSValuer.OPSValue”,这让我认为这是遇到错误的自定义代码。

于 2008-10-14T21:18:10.587 回答
0

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

于 2008-10-17T19:15:22.203 回答