【问题标题】:How to force 32bit app to use a 64bit COM dll in CreateObject?如何强制 32 位应用程序在 CreateObject 中使用 64 位 COM dll?
【发布时间】:2011-03-08 04:53:16
【问题描述】:

以下代码的行为会有所不同,具体取决于我使用的是 32 位还是 64 位版本的 wscript:

Set oSQLServer = CreateObject("SQLDMO.SQLServer")

For Each o in oSQLServer.ListInstalledInstances
    MsgBox o
Next

在 32 位中,它将列出我的 32 位服务器 (SQL Server 2000) 的实例,在 64 位中,我将获取我的 64 位服务器 (SQL Server 2008) 的内容。 我需要将此代码转换为 C++(32 位应用程序)。但我需要展示 64 位服务器。如何强制创建的对象使用注册表中的 64 位 dll 和 64 位键?

【问题讨论】:

    标签: sql-server com 32bit-64bit createobject


    【解决方案1】:

    32 位应用无法加载 64 位 DLL,64 位应用也无法加载 32 位 DLL。

    【讨论】:

    • 32 位应用程序可以使用 64 位进程外 COM 对象,反之亦然。由于无论如何都必须跨进程边界编组对象,因此 COM 透明地为您处理任何位差异。
    【解决方案2】:

    我决定使用带有连接字符串的 ODBC 的 SQLBrowseConnect

    "DRIVER={SQL Server Native Client 10.0};".  
    

    SQLDMO 确实已经死了,而 SQLSMO 仅适用于托管应用程序是相当短视的。

    【讨论】:

      猜你喜欢
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 2020-05-29
      • 2012-03-06
      相关资源
      最近更新 更多