Я пытаюсь загрузить DLL, используя следующий код скрипта: (Если есть более простой способ загрузить DLL и вызвать на нем функцию, которая решила бы мою проблему, я рад это услышать)Ruby Fiddle поиск 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"
рубин интерпретатор работает в другой программе (Sketchup), поэтому моя среда ограничена.
По моему опыту, я не смог заставить Fiddle автоматически находить файлы DLL в любой системе, кроме MacOS. В Linux я использовал pkg-config в прошлом, но это не относится к не-разработчикам, у которых не будет pkg-config. Затем я использовал ldconfig напрямую. В Windows я написал скрипт ruby, который ищет DLL в текущем рабочем каталоге, а затем Windows/System32, а затем сам папку Windows. Это похоже на порядок поиска большинства приложений Windows. – jellymann