问题标签 [ruby-ffi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
70 浏览

ruby - Ruby Fiddle - 在 WINdows MSYS2 中找不到函数

我正在尝试使用Ruby Fiddle访问我开发的 C 函数。C代码是:

我正在使用MSYS2,所以我编译它:

然后在 Ruby (2.7.1) irb 控制台中使用:

加载dll,我没有收到任何错误,但是当我尝试加载函数时

我收到错误:

我在 macos 上使用了相同的方法,并且函数被正确导入,所以我认为问题不在于代码或函数签名。

为了完整起见,如果它很重要,我已经分别安装了 MSYS2 和 ruby​​,MSYS2 来自主网站,Ruby 来自ruby​​installers。我正在从MSYS2 MinGW 64控制台编译并irb从安装程序创建的 Ruby 终端运行。它也应该使用 MSYS2。

编辑(在正确答案后添加更多信息) 对我来说关键部分是-shared选项。

我还MSYS2MSYS2卸载并直接使用了MSYSfrom ruby​​installer,如下所示:

此时,如果您还没有安装工具链,您可以使用

我仍然不明白的一件奇怪的事情是输出which

它们看起来不同,但这可能是因为 MSYS2 与 ruby​​installer 捆绑在一起时的工作方式。