我有一个 VB6 dll 正在尝试使用以下代码行创建一个 COM 对象:
Set CreateObj = CreateObject("OPSValuer.OPSValue")
但是,这会失败并出现错误“对象变量或未设置块变量”。
我可以在 dcomcnfg 中看到 OPSValuer.OPSValue 并且它似乎注册得很好。有没有人对可能导致问题的原因有任何想法?
您尝试实例化的类可能未正确安装或缺少某些依赖项。如果您有权访问 OLE 视图,则可以尝试在 VB 之外实例化该类。如果它不会实例化,那么您的安装错误或缺少依赖项。OLE View 随 Visual Studio 一起提供,在您的系统上搜索 OleView.exe。
它位于我的系统上:D:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin
DMKing 对 OleView 的看法是正确的。还可以尝试查看Dependency Walker中的控件,任何缺少的依赖项都应该很快浮出水面。
由于这是一个 DCom 组件,因此组件构造函数中也可能出现故障,如果构造函数中出现任何故障,您将收到该错误。这是本地 DCom 对象还是在另一层上运行的东西?
而不是 CreateObject 尝试用标准的 New 实例化它,看看它是否会给你一个不同的错误。添加引用本身可能有助于确定该错误。您使用后期绑定而不是早期绑定是否有原因?
该错误可能会在对象初始化例程中引发。我在 Google 上找不到“OPSValuer.OPSValue”,这让我认为这是遇到错误的自定义代码。
假设是一个用 VB 编写的组件,这可能是在该组件事件中OPSValuer.OPSValue
引发的错误。Class_Initialize
如果你有组件的源代码,它应该很容易调试。