如何通过FFI将带有字符串字段的结构传递给具有该结构的预初始化字符串字段的本机库?

问题描述

我有ruby代码,它通过FFI gem将结构传递给本地Rust库。

结构包含一个字符串字段。我需要能够在Ruby端指定字符串。

    class MyStruct < FFI::Struct
      layout :s1,:string,:field2,:uint32,# other fields

我已经尝试过了:

     def initialize(ruby_str)
       self[:s1] = ruby_str
       # [.......]

并且已经得到了:

`[]=': Cannot set :string fields (ArgumentError)

这会打击细分错误

def initialize(ruby_str)
  p1 = FFI::MemoryPointer.from_string(ruby_str)
  self[:content] = p1
  self[:len] = ruby_str.length

我已经阅读了有关此问题的信息,但没有找到明确的解决方案,也没有示例。我需要至少能够从Ruby传递字符串字段 (一种方式)。

此外,还将从 本地Rust库(不是NULL终止,但长度在单独的字段中指定)接收的字符串转换为Ruby字符串。

那怎么办呢?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)