2

我正在对 VB6 应用程序进行一些小的更新。它在连接到 SQL Server 2000 数据库的 Windows 2000 服务器上运行。

我从服务器获取了源代码的副本,对其进行了更新并在本地编译。我的本地机器正在运行 Windows 7 64x。我将 .exe 文件复制回服务器,当我尝试运行它时收到运行时错误 49:Activex 组件无法创建对象。我知道当应用程序尝试使用 RDO 打开与数据库的连接时会发生此错误。

我可以从我的本地机器和运行 windows xp 的虚拟电脑上运行 .exe。

这个应用程序以前在服务器上工作,我所做的更改是对其输出的文件的内容,因此不需要新的引用。

这些是它落在上面的线:

rdoEnvironments(0).CursorDriver = rdUseNone 
Set conDB = rdoEnvironments(0).OpenConnection("MRA", rdDriverNoPrompt, True) 
4

2 回答 2

2

我最近将Activex component can't create object错误解决如下:

  • 在文本编辑器中打开.vbpVB6 项目的文件。
  • 文件顶部是项目使用的所有 activex 对象。就我而言,这些是:

    Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE Automation
    Object={22D6F304-B0F6-11D0-94AB-0080C74C7E95}#1.0#0; msdxm.ocx
    Reference=*\G{3F4DACA7-160D-11D2-A8E9-00104B365C9F}#5.5#0#C:\WINDOWS\system32\vbscript.dll\3#Microsoft VBScript Regular Expressions 5.5
    Reference=*\G{3D0758FA-4171-11D0-A747-00A0C91110C3}#a.0#0#C:\WINDOWS\system32\dbgwproc.dll#Debug Object for AddressOf Subclassing
    Object={248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0; MSWINSCK.OCX
    Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; mscomctl.ocx
    Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; COMDLG32.OCX
    Object={3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0; RICHTX32.OCX
    
  • 打开注册表编辑器应用程序。

  • 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Classes
  • Ctrl+ F,然后搜索上面的每个类id,如{00020430-0000-0000-C000-000000000046}
  • 期望Reference=在 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface 和Object=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID中找到条目
  • 在每个条目之后,您会注意到有一个类似#1.2. 就我而言Version,我在注册表中找到匹配项附近的键中发现了相同的版本号。如果版本不匹配,则可能值得注册正确版本的 OCX 或 DLL 文件。
  • 找到每个条目后,您可以在 regedit 树中单击并按左箭头直到回到Classes分支,然后搜索下一个条目。
  • 最重要的是,如果您没有找到您搜索的类 id 的条目,则很可能导致Activex component can't create object错误。

就我而言,缺少的课程是Reference=*\G{3D0758FA-4171-11D0-A747-00A0C91110C3}#a.0#0#C:\WINDOWS\system32\dbgwproc.dll#Debug Object for AddressOf Subclassing. 这是在调试器中运行 VB6 应用程序时使用的特殊类,但不应与应用程序一起分发或在分发的应用程序中引用。我让 VB 通过打开Project > <app name> Properties... > 'Make' tab和删除.dll 来DEBUGWINDOWPROC = 1停止引用 dbgwproc.dll Conditional Compilation Arguments:。重建后,不再出现错误。

于 2015-03-27T02:39:39.923 回答
0

您可能缺少一些 RDO 在服务器上工作的 DLL,试试这个:

http://support.microsoft.com/kb/195474 - 如何确定分发应用程序所需的 RDO 文件

于 2013-06-26T13:20:43.343 回答