Search code examples
comlotus-dominocom-interop

Lotus Domino on 64 bit system: Could not create automation object, error 208


I have created a C# .NET DLL with Release/AnyCPU as per http://www-01.ibm.com/support/docview.wss?uid=swg21230705 and successfully registered it for COM Interop.

When I open my 32bit Excel on a 32bit Windows 10, and use the code

Private Sub CommandButton1_Click()
    Dim obj As Variant
    Set obj = CreateObject("MyTest")
    MsgBox obj.AppendStr("This is")
End Sub

it returns the expected values. When I open 32bit Excel on a 64 bit Windows 8.1, and use the same code, it also returns the expected values. The same goes for a similarly crafted VB6 executable deployed on both systems.

But when I try the same from Notes 32 bit using the code

Sub Click(Source As Button)
    Dim obj As Variant 
    set obj = CreateObject("MyTest") 
    MsgBox obj.AppendStr("This is")
End Sub
  • it returns the expected values on a 32 bit Windows 10
  • it throws the error "Could not create automation object" on a 64 bit Windows 8.1

Furthermore, and this is the most interesting part for me, it throws "Could not create automation object" when run as a LotusScript http agent on the Domino 64 bit server on a 64 bit Windows Server system.

Do you have any ideas how I could get the DLL function call to work with both 32 as well as 64 bit Lotus Domino Server?

Or are there any other ways to call a single function in my C# DLL from Notes, which takes a single string as parameter and returns a byte array? (e.g. through a Java agent, through a Domino shell object, or both?)


Solution

  • I just found the solution, and it wasn't a Domino problem at all. The linked tutorial is for pre-64bit systems and says:

    1. To make the objects in this DLL accessible via the COM interface, enter the following command:
      regasm MyTest.dll

    Since the introduction of AMD64, you have to read this step as follows:

    1. To make the objects in this DLL accessible via the COM interface for both 32 bit and 64 bit applications, enter BOTH the following commands:

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

    I only did the first, which made it work for 32bit, but not for 64bit.