繁体   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