问题标签 [mruby]
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.
c - mruby:生成可读的 c 代码
我从 mruby 开始,我需要一点使用 mrbc 生成可读的 .c 代码。我在关注这篇文章:
这里提到:
将生成带有一些内容的 test_program.c。
但是在我的机器上,当我运行这个命令时它说:
mrbc:应指定输出文件以编译多个文件
然后我尝试了
哪个有效,生成 c 文件,但其内容只是字节码:
这基本上是我们在 c 代码中放入的 mruby 代码的字节码。
如果您查看Readable C Code (.c)部分下的博客 m ,这实际上应该生成了 c 代码。
为什么 mrbc 不生成可读的 c 代码?
c - 在 mruby 脚本文件中进行更改后,我是否需要重新编译 C-mruby 应用程序?
我有一个 C 应用程序。C 应用程序需要一些包含mruby代码的脚本文件。是否可以使用当前的mruby实现运行此应用程序而无需重新编译(在我对 mruby 脚本进行任何更改之后)?如果是怎么办?
但是我在这里没有找到任何这样的方法地址。如果在 C 应用程序中(嵌入了 mruby)我必须重新编译整个应用程序,那么mruby的优势是什么?
我对脚本语言的想法是,如果我更改mruby脚本文件中的任何内容,则不需要重新编译整个应用程序,这将提高生产力。
我认为这是在本机应用程序中使用任何脚本文件的一个优势。
请帮助我理解这一点。
rbenv - 使用 rbenv/ruby-build 安装后如何包含 mruby?
我正在尝试编译本教程中的“源代码 (.c)”示例。
我已经使用 rbenv 安装了 mruby:rbenv install mruby-1.2.0
尝试编译程序时出现错误:
通过 rbenv/ruby-build 安装时,我应该如何引用 mruby 库?
ruby - 如何为 WordPress 多站点编写 h2o 网络服务器 mruby 处理程序?
这就是 Apache 所需要的。我想知道我是如何在 h2o 中做到这一点的。
// 在这个 btw 上浪费了 300 声望。
c - mruby 中的最小静态编译
我有一个简单的例子:
如何在没有库的情况下以静态模式编译它libmruby.a
?我只想添加/src/*.c
文件。
我不需要Array
。没有文件访问权限,没有其他 gem ( time
, test
, sprintf
, random
, 等)
哪些文件很重要,哪些文件可以通过?我不需要 gem 编译器。如果可能的话,我只能运行字节码。
我怎样才能做到这一点?
parsing - 嵌入 mRuby:解析错误后检索 mrb_parser_message
我正在尝试将 mRuby 嵌入Max MSP对象中。我要设置的第一件事是在 Max IDE 控制台窗口中记录错误。为此,在我使用 mrb_parse_string 解析代码(存储在 C 字符串中)后,我希望解析器的 error_buffer 数组中存在错误,但该数组中的结构始终为空( lineno 和 column 设置为 0 和 message 集为 NULL ),即使出现错误。
在解析代码之前是否有一种特殊的方法来设置解析器,以便在发生错误时正确填充其 error_buffer 数组?我已经查看了 mirb 来源,但它看起来不像。我迷路了。这是我正在使用的代码,取自我用作测试的一个小型 C 程序:
当通过以下错误的 ruby 代码时:
前面的代码输出:
我不知道第一行来自哪里,因为我编译了 mRuby 并定义了 MRB_DISABLE_STDIO 并且按照第 14 行和 mrbconf.md 中的建议,但它是准确的。
第二行是我的代码的实际输出,显示返回mrb_parser_state
的结构error_buffer
是空的,这令人惊讶,因为解析器确实看到了错误。
ruby - mruby:如何执行 shell 命令?
在 mruby 中,我如何使用%x()
,``
或运行 shell 命令system
?有我可以使用的mgem吗?
c++ - MRB_THROW 导致 libc++abi.dylib 中的错误
我正在尝试使用一些额外的 gem构建ios-ruby-embedded项目的修改版本,包括mruby-mgems列表中的mruby-marshal gem (其中包括一个 .cpp 文件)。我可以让它构建和运行,但如果我引发任何异常,应用程序在从 error.c 调用时崩溃,并显示以下消息:MRB_THROW
我怀疑问题是如何编译和链接 mRuby 异常处理的冲突:根据文档,如果包含 C++ 代码,它可以使用 setjmp/longjmp 处理或 C++ 异常;但是,我无法弄清楚我需要什么样的配置选项组合才能让它工作。
为了构建它,我对项目进行了一些更改:
- 在 Rakefile 中为每个目标添加 conf.cxx 部分(复制 conf.cc 部分中的设置)
- 在我正在使用的 Xcode 项目中将“-lc++”标志添加到“其他链接器标志”(源自mruby-ios-example项目)
- 在 mruby-marshal 项目中,使用mruby-pure-regexp gem 代替mruby-onig-regexp依赖
c - 无法在 Centos 7 上安装 ngx_mruby
我想在centos7上安装带有模块ngx_mruby的nginx,但我遇到了编译错误。
按照此处描述的步骤,我做了(在我的主目录中):
在make
过程中,我得到了错误:
我尝试了另一种安装 ngx_mruby 的方法:
但同样的错误发生在make
. 然后我用谷歌搜索,但似乎很少有人有同样的问题。
这是一个常见的错误,还是有什么方法可以避免这个错误?
谢谢你。
ruby - const_get 如何在 mruby 中工作?
我mruby 1.3.0 (2017-7-4)
使用build_config.rb
:
我发现const_get
mruby 中的方法与 ruby 中的方法不同。在 ruby (2.4.0p0) 中,Class.const_get('Fixnum')
返回常量Fixnum
,而在 mrubyClass.const_get('Fixnum')
中导致错误uninitialized constant Class::Fixnum (NameError)
。
然后,我尝试了另一个示例:class Hoge; end; class Hoge::Fuga; end
. 在 ruby 中,两者都Class.const_get('Hoge::Fuga')
给出Hoge.const_get('Fuga')
常量Hoge::Fuga
。在 mruby 中,只有Hoge.const_get('Fuga')
返回Hoge::Fuga
。