2016-07-29 79 views
0

我已經按照http://www-01.ibm.com/support/docview.wss?uid=swg21230705創建了具有Release/AnyCPU的C#.NET DLL,併成功爲COM Interop註冊了它。64位系統上的Lotus Domino:無法創建自動化對象,錯誤208

當我打開我的32位的Excel在32位Windows 10,並使用代碼

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可執行文件也是如此。

但是,當我使用的代碼

Sub Click(Source As Button) 
    Dim obj As Variant 
    set obj = CreateObject("MyTest") 
    MsgBox obj.AppendStr("This is") 
End Sub 
  • 它返回的預期值嘗試同樣從Notes 32位的32位Windows 10
  • 它拋出錯誤「無法創建自動化對象「在64位Windows 8.1上

此外,這是我最感興趣的部分,它引發」無法創建自動化對象「作爲LotusScript HTTP代理運行時他是64位Windows Server系統上的Domino 64位服務器。

你有什麼想法,我可以如何獲得DLL函數調用以及32位和64位Lotus Domino服務器?

還有沒有其他的方法來從我的C#DLL中的單個函數調用,它將單個字符串作爲參數並返回一個字節數組? (例如,通過Java代理,通過Domino外殼對象,或兩者?)

+0

你只需要將你的字符串轉換爲lotusscript中的字節數組? –

+0

我的自定義庫問題是一個自定義JSON到二進制文件轉換器。它有幾千行C#代碼,甚至更多使用Java或LotusScript – Alexander

回答

2

我剛剛找到解決方案,它根本不是Domino問題。鏈接的教程是64位預系統並說:

  • 爲了使在該DLL的對象經由COM接口訪問,輸入以下命令:
    regasm MyTest的。dll的
  • 自從引入AMD64的,你必須閱讀本步驟如下:

  • 爲了使在此DLL通過COM接口訪問的對象對於32位和64位應用程序,輸入BOTH以下命令:

    %Windir%\Microsoft.NET\Framework\<version>\regasm MyTest.dll 
    %Windir%\Microsoft.NET\Framework64\<version>\regasm MyTest.dll 
    
  • 我只做了第一個,這使得它適用於32位,但不適用於64位。

    1

    要回答技術方面的問題,可以通過將它複製到Windows \ SysWow64.see Can a 64 bit EXE link against 32-bit DLLs?來獲得更多詳細信息。

    要回答您的需要,我們只需要將字符串轉換爲字節數組。

    你可以用java做這個,並用ls2j來調用它。

    我也認爲使用本地消費者的lib來dothis。

    另請參閱https://www.experts-exchange.com/questions/23120423/Using-NotesStream-to-convert-a-string-to-a-byte-array.html它給你一個解決方案。