Com 64位系统上的Lotus Domino:无法创建自动化对象,错误208

Com 64位系统上的Lotus Domino:无法创建自动化对象,错误208,com,lotus-domino,com-interop,Com,Lotus Domino,Com Interop,我已根据创建了一个具有Release/AnyCPU的C#.NET DLL,并成功地将其注册为COM互操作 当我在32位Windows 10上打开32位Excel并使用代码 Private Sub CommandButton1_Click() Dim obj As Variant Set obj = CreateObject("MyTest") MsgBox obj.AppendStr("This is") End Sub 它返回预期值。当我在64位Windows 8.1

我已根据创建了一个具有Release/AnyCPU的C#.NET DLL,并成功地将其注册为COM互操作

当我在32位Windows 10上打开32位Excel并使用代码

Private Sub CommandButton1_Click()
    Dim obj As Variant
    Set obj = CreateObject("MyTest")
    MsgBox obj.AppendStr("This is")
End Sub
它返回预期值。当我在64位Windows 8.1上打开32位Excel并使用相同的代码时,它也会返回预期值。这同样适用于部署在两个系统上的精心编制的类似VB6可执行文件

但是当我尝试使用代码从Notes 32位执行相同操作时

Sub Click(Source As Button)
    Dim obj As Variant 
    set obj = CreateObject("MyTest") 
    MsgBox obj.AppendStr("This is")
End Sub
  • 它返回32位Windows 10上的预期值
  • 它在64位Windows 8.1上抛出错误“无法创建自动化对象”
此外,这是我最感兴趣的部分,它在64位Windows服务器系统上的Domino 64位服务器上作为LotusScript http代理运行时抛出“无法创建自动化对象”

您是否知道如何使DLL函数调用同时适用于32位和64位LotusDomino服务器


或者有没有其他方法可以从Notes调用我的C#DLL中的单个函数,该函数以单个字符串作为参数并返回字节数组?(例如,通过Java代理、Domino shell对象或两者?

要回答技术方面的问题,可以通过将32位DLL复制到Windows\SysWow64来调用它。有关详细信息,请参阅

为了满足您的需要,我们只需要将字符串转换为字节数组

您可以在java中执行此操作,并使用ls2j调用它

我也认为应该使用本地消费者的lib来实现这一点


还可以查看它,为您提供一个lotuscript解决方案。

要回答技术方面的问题,您可以通过将其复制到Windows\SysWow64来调用32位DLL。有关详细信息,请参阅

为了满足您的需要,我们只需要将字符串转换为字节数组

您可以在java中执行此操作,并使用ls2j调用它

我也认为应该使用本地消费者的lib来实现这一点


看看它,给你一个lotuscript解决方案。

我刚刚找到了解决方案,它根本不是Domino问题。链接教程针对64位之前的系统,内容如下:

  • 要通过COM接口访问此DLL中的对象,请输入以下命令:
    regasm MyTest.dll
  • 自引入AMD64以来,您必须阅读以下步骤:

  • 要使32位和64位应用程序都可以通过COM接口访问此DLL中的对象,请输入以下命令:

    %Windir%\Microsoft.NET\Framework\<version>\regasm MyTest.dll
    %Windir%\Microsoft.NET\Framework64\<version>\regasm MyTest.dll
    
    %Windir%\Microsoft.NET\Framework\\regasm MyTest.dll
    %Windir%\Microsoft.NET\Framework64\\regasm MyTest.dll
    

  • 我只做了第一个,这使它在32位上工作,但在64位上不工作。

    我刚刚找到了解决方案,它根本不是Domino问题。链接教程针对64位之前的系统,内容如下:

  • 要通过COM接口访问此DLL中的对象,请输入以下命令:
    regasm MyTest.dll
  • 自引入AMD64以来,您必须阅读以下步骤:

  • 要使32位和64位应用程序都可以通过COM接口访问此DLL中的对象,请输入以下命令:

    %Windir%\Microsoft.NET\Framework\<version>\regasm MyTest.dll
    %Windir%\Microsoft.NET\Framework64\<version>\regasm MyTest.dll
    
    %Windir%\Microsoft.NET\Framework\\regasm MyTest.dll
    %Windir%\Microsoft.NET\Framework64\\regasm MyTest.dll
    

  • 我只做了第一个,这使它适用于32位,但不适用于64位。

    您只需要在lotusscript中将字符串转换为字节数组吗?我讨论的自定义库是一个自定义JSON到二进制文件转换器。这是几千行C#代码,在Java或lotusscript中甚至更多。您只需要在lotusscript中将字符串转换为字节数组吗?我讨论的自定义库是一个自定义JSON到二进制文件转换器。这是几千行C#代码,在Java或LotusScript中甚至更多