标签: c++ ruby winapi dll
我正在尝试在我的Ruby应用程序中加载一个C ++ DLL作为二进制对象。 我已使用regsrv32注册了接口并使用Win32OLE加载了Dll ..但如果我运行的是64位的Ruby变体,我无法加载32位C ++ dll,反之亦然。唯一有效的组合是
regsrv32
Win32OLE
32位ruby加载32位C ++ Dll。 64位ruby加载64位C ++ Dll
我在这里看到的唯一可行方法是分叉32位ruby进程,通过Win32OLE注册并加载32位dll。
答案 0 :(得分:0)
老问题,但到目前为止还没有答案,所以我尝试:)。
由于ruby使用的是64位,而您的COM +可能是32位,因此它将无法在库模式下运行。
要解决此问题,您需要注册COM +组件,然后在dcomcnfg.exe中将dll设置到服务器应用程序。
dcomcnfg.exe
这将在32位dllhost.exe中运行您的dll,然后ruby可以通过dll = WIN32OLE.new("your.dll")成功调用您的DLL
dllhost.exe
dll = WIN32OLE.new("your.dll")
注意:您可能需要设置一个额外的ID。