2013-07-23 4 views
1

Проблема заключалась в том, чтобы получить доступ к G-WAN C API РубиМожно ли использовать Ruby-FFI с G-WAN

поэтому я попытался использовать FFI, но Гван не имеет библиотеку, когда я пытался загрузить двоичный файл, он показывает:

/home/asd/.gem/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/library.rb:123:in `block in ffi_lib': Could not open library '/home/asd/bin/gwan_linux32-bit/gwan': /home/asd/bin/gwan_linux32-bit/gwan: cannot dynamically load executable (LoadError) 
    from /home/asd/.gem/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/library.rb:90:in `map' 
    from /home/asd/.gem/ruby/2.0.0/gems/ffi-1.9.0/lib/ffi/library.rb:90:in `ffi_lib' 
    from /home/asd/bin/gwan_linux32-bit/127.0.0.1_8081/#127.0.0.1/csp/test.rb:26:in `<module:MyLibrary>' 
    from /home/asd/bin/gwan_linux32-bit/127.0.0.1_8081/#127.0.0.1/csp/test.rb:24:in `<main>' 

потому что, очевидно, это не библиотека, это исполняемый двоичный

сначала я думаю, что я должен сделать C-расширение для рубина доступа G-WAN API, но, чтобы думать об этом, он также потерпел бы неудачу, если у нас нет .o для ссылки (только предоставлено .h), правильно?

так что .. можно ли использовать FFI Ruby для загрузки с .h вместо dll?

ответ

0

API-интерфейс G-WAN недоступен из общей библиотеки: он предоставляется исполняемым файлом G-WAN.

Чтобы использовать Ruby от API G-WAN, здесь нет замены G-WAN, интегрирующего среду выполнения Ruby, как это было сделано для C#, Java или Scala.

Попробуйте найти необходимую информацию (примеры кода о том, как вызвать C из Ruby и Ruby с C, а также как передать структуры данных между C и Ruby) и оставьте нам строку на gwan.ch.

Не забудьте проверить, что эти ресурсы являются потокобезопасными, поскольку G-WAN - многопоточное приложение.

+0

как вызвать C/C++ из Ruby: http://stackoverflow.com/questions/1542520/how-can-i-call-c-functions-from-within-ruby (создание расширения C или расширение C++ используя SWIG, используйте FFI или используйте RubyInline) – Kokizzu

+0

как вызвать Ruby из C/C++: http://stackoverflow.com/questions/626333/embedding-a-ruby-interpreter-in-ac-app только обычный код, так как Рубиновая МРТ была сделана с использованием C – Kokizzu

+0

. Это пример RubyInline-way: https://github.com/seattlerb/rubyinline – Kokizzu

 Смежные вопросы

  • Нет связанных вопросов^_^