簡體   English   中英

64 位 ruby​​ 中使用的 Win32OLE 無法加載 32 位 C++ Dll

[英]Win32OLE used in 64 bit ruby cannot load 32 bit C++ Dll

我試圖在我的 Ruby 應用程序中加載一個 C++ DLL 作為二進制對象。 我已經使用注冊的界面regsrv32並加載使用DLL Win32OLE ..但如果我運行紅寶石我的一個64位的變體不能加載一個32位的C ++ DLL,反之亦然。 唯一有效的組合是

32 位 ruby​​ 加載 32 位 C++ Dll。 64 位 ruby​​ 加載 64 位 C++ Dll

我在這里看到的唯一可能的方法是分出一個 32 位 ruby​​ 進程來通過Win32OLE注冊和加載 32 位 dll。

老問題,但到目前為止還沒有答案,所以我嘗試:)。

由於 ruby​​ 使用的是 64 位,而您的 COM+ 可能是 32 位,它不會在庫模式下運行。

為了解決這個問題,您注冊您的 COM+ 組件,然后在dcomcnfg.exe中將您的 dll 設置為服務器應用程序。

在此處輸入圖片說明

這將在 32 位dllhost.exe運行您的 dll,然后 ruby​​ 可以通過dll = WIN32OLE.new("your.dll")成功調用您的 DLL

注意:您可能需要設置一個額外的標識。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM