問題タブ [ruby-native-extensions]

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 投票する
2 に答える
548 参照

ruby - Crystalを使用したRuby gemネイティブ拡張?

ActiveModelSerializers のパフォーマンスを改善しようとしているので、いくつかの一般的な情報を収集しようとしています。

また、これまでネイティブ拡張を書いたことはありませんが、いくつかの C 拡張と Rust 拡張を見てきました。

私の質問:

  • これは行われましたか?(Ruby gem で Crystal ネイティブ拡張を作成しますか?)
  • ルビーのオブジェクト/構造との相互作用は、クリスタルでどのように機能しますか? (2 つの言語間の通信のために何らかのマーシャリングや何かが必要ですか?)
0 投票する
1 に答える
117 参照

ruby - ruby ネイティブ拡張機能のビルドに関する問題

ruby から呼び出したいコードを c で作成しました。この記事をガイドとして使用しましたが、問題をリンクせずに実行するのに問題があります。

まず、ソース ファイルを自分のext/NAME/ディレクトリに直接コピーする必要があります。それらをそのディレクトリにサブモジュール化した場合、それらはピックアップされないようです。つまり、のようなサブディレクトリの下にあるということext/NAME/CLIB_GIT_SUBMODULE_FILES/です。

次に、c プロジェクトの makefile を実行する必要があるようです。そうしないと、segfault が発生します。makefileを実行する.oと、ext/NAMEディレクトリにオブジェクト ファイル (/test/

その下でmakefileを実行すると、などext/NAME/が作成されることに注意してください。SOMEFILE_ONE.o

この時点で何が起こっているのかわかりません:(ガイドはすべてext/NAME、既存のcライブラリをラップするのではなく、ディレクトリに新しいcコードを書いているようです。nokogiriのようなガイダンスのために他のプロジェクトを見てみましたが、彼らはやっていますはるかに多く、ふるいにかけるのが難しくなります。

どんな助けでも大歓迎です!

0 投票する
3 に答える
945 参照

ruby - ruby ネイティブ拡張: 未定義のシンボル

ruby ネイティブ エクステンションを作成しようとしていますが、rakewhich usesを実行ext/example_project/extconf.rbしてプロジェクトをビルドし、 でテストを実行するとtest/、テストの実行時に次のエラーが発生します。

私のファイルが正しくリンクされておらず、何らかの方法でextconf.rband/orを変更する必要があるRakefileことは確かですが、その方法がわかりません。

GitHubで問題を示す簡単なリポジトリを作成しました。rakeクローンを作成してプロジェクトのルートから実行すると、同じエラーで失敗します。

いくつかの追加情報:

  • ruby gemhoeを使用してプロジェクトを作成しましたsow example_project
  • 失敗した関数は、サブディレクトリ で定義された関数を呼び出そうとしていますext/example_project/c_example_project。私の実際のプロジェクトでは、ディレクトリの git サブモジュールを使用しますext/example_project。これにより、サブモジュールがサブディレクトリとして設定されます。サブモジュールは、フラット化された構造 (ルート ディレクトリ内のすべてのファイル) を持つ ac プロジェクトです。: この言い回しはわかりにくいかもしれませんが、重要な点は、ext/example_project/c_example_project呼び出しようとしているメソッドを持つ、ネストされた c プロジェクトが定義されていることです。

明確化が必要な場合はお知らせください。提供できるよう最善を尽くします。

0 投票する
0 に答える
82 参照

c++ - ruby ネイティブ ラップ c ライブラリ segfault

私はc で書いた小さなライブラリをラップしようとしていますが、それを機能させるためにホームストレッチをしていると思います。このライブラリにはいくつかのかなりしっかりしたテストがあり、valgrind を実行してメモリ リークや目立った問題を取り除きました。それはそれ自体でかなりしっかりと機能します。

ただし、Ruby を使用してラップしようとすると、segfault が発生します。ライブラリをラップするプロジェクトの例を次に示します。そのプロジェクトのテストが実行されると、ライブラリへの呼び出しで segfault が発生します。それを実行すると、デバッグのために gdb にロードしたコア アボートが発生しますが、何が問題なのかわかりません。コア ダンプには、問題はこの行にあると書かれていますが、与えられた情報は非常にまばらであり、c ランドでテストを実行するとコードがうまく動作するため、何が原因なのかわかりません。

コア ダンプが言う行は segfaultingです:

rakeテストによってロードされる共有オブジェクトを最終的に生成するプロセスを開始するルート ディレクトリから実行することで再現できます。Cの経験が豊富な人が見て、正しい方向に向けてくれる可能性があることを願っています。

さらに情報が必要な場合はお知らせください。

コア ダンプのスニペット:

0 投票する
0 に答える
125 参照

ruby - 色付きの http gem をインストールしようとするとエラーが発生する

http で色付けされた gem をインストールしようとしていますが、「http で色付けされた gem インストール」を実行すると、次のエラーが発生しました。

誰かが私を助けることができます:)?

前もって感謝します