1
我想加载一个dll,使用下面的小提琴代码:(如果有更简单的方法来加载dll并调用一个函数就可以解决我的问题,我很高兴听到它)红宝石提琴dll搜索路径
require 'fiddle' unless defined?(Fiddle)
require 'fiddle/import' unless defined?(Fiddle::Importer)
extend Fiddle::Importer
dlload "Foo.dll"
dlload "C:/Folder/Foo.dll"
工作就像我想要的。但问题是Foo.dll是一个C++ dll,需要其他几个位于不同位置的dll。
我该如何去打电话dlload "Foo.dll"
没有完整的路径。总之,如何将目录列表添加到Ruby dll搜索路径中?
我曾尝试以下:
$LOAD_PATH.unshift("C:/Folder")
ENV['RUBYLIB'] = "C:/Folder"
ENV['LD_LIBRARY_PATH'] = "C:/Folder"
Ruby解释器的另一个程序(Sketchup的)内运行,所以我的环境受到限制。
以我的经验,我一直无法让小提琴在除MacOS以外的任何系统上自动查找我的DLL文件。 在Linux上,我过去使用过pkg-config,但这对于那些不具有pkg-config的非开发者来说并不友好。然后我直接使用ldconfig。 在Windows上,我编写了一个ruby脚本,用于在当前工作目录中搜索DLL,然后搜索Windows/System32,然后搜索Windows文件夹本身。这似乎是大多数Windows应用程序的搜索顺序。 – jellymann