c/c++语言开发共享如何处理ruby Fiddle中的数组指针

我试图从Ruby FFI切换到Fiddle,现在它是Ruby std lib的一部分。

它虽然没有文档,但我很难弄清楚如何处理数组和指针。 特别是,如何将Ciddle接口写入C函数,如下所示:

void my_func(double *, size_t len) 

将它映射到Ruby非常简单:

 module Test extend Fiddle::Importer dlload './lib/libTest.dylib' extern 'void my_func(double *, size_t)' end 

但是,我如何构建一个指向数组的指针,作为第一个参数传递? 谢谢!

    你的意思是在ruby中构建一个c数组和这个数组的指针?

    你可以尝试这样:

     free = Fiddle::Function.new(Fiddle::RUBY_FREE, [TYPE_VOIDP], TYPE_VOID) p = Pointer.malloc(SIZEOF_DOUBLE*len, free) 

    并像这样打电话:

     my_func(p,len) 

    当不使用此内存块时,ruby GC将调用free函数。

    需要了解更多c/c++开发分享如何处理ruby Fiddle中的数组指针,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享如何处理ruby Fiddle中的数组指针相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/957962.html

      (0)
      上一篇 2021年11月25日
      下一篇 2021年11月25日

      精彩推荐