問題タブ [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.
ruby - Crystalを使用したRuby gemネイティブ拡張?
ActiveModelSerializers のパフォーマンスを改善しようとしているので、いくつかの一般的な情報を収集しようとしています。
また、これまでネイティブ拡張を書いたことはありませんが、いくつかの C 拡張と Rust 拡張を見てきました。
私の質問:
- これは行われましたか?(Ruby gem で Crystal ネイティブ拡張を作成しますか?)
- ルビーのオブジェクト/構造との相互作用は、クリスタルでどのように機能しますか? (2 つの言語間の通信のために何らかのマーシャリングや何かが必要ですか?)
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のようなガイダンスのために他のプロジェクトを見てみましたが、彼らはやっていますはるかに多く、ふるいにかけるのが難しくなります。
どんな助けでも大歓迎です!
ruby - ruby ネイティブ拡張: 未定義のシンボル
ruby ネイティブ エクステンションを作成しようとしていますが、rake
which usesを実行ext/example_project/extconf.rb
してプロジェクトをビルドし、 でテストを実行するとtest/
、テストの実行時に次のエラーが発生します。
私のファイルが正しくリンクされておらず、何らかの方法でextconf.rb
and/orを変更する必要があるRakefile
ことは確かですが、その方法がわかりません。
GitHubで問題を示す簡単なリポジトリを作成しました。rake
クローンを作成してプロジェクトのルートから実行すると、同じエラーで失敗します。
いくつかの追加情報:
- ruby gem
hoe
を使用してプロジェクトを作成しましたsow example_project
- 失敗した関数は、サブディレクトリ で定義された関数を呼び出そうとしています
ext/example_project/c_example_project
。私の実際のプロジェクトでは、ディレクトリの git サブモジュールを使用しますext/example_project
。これにより、サブモジュールがサブディレクトリとして設定されます。サブモジュールは、フラット化された構造 (ルート ディレクトリ内のすべてのファイル) を持つ ac プロジェクトです。注: この言い回しはわかりにくいかもしれませんが、重要な点は、ext/example_project/c_example_project
呼び出しようとしているメソッドを持つ、ネストされた c プロジェクトが定義されていることです。
明確化が必要な場合はお知らせください。提供できるよう最善を尽くします。
c++ - ruby ネイティブ ラップ c ライブラリ segfault
私はc で書いた小さなライブラリをラップしようとしていますが、それを機能させるためにホームストレッチをしていると思います。このライブラリにはいくつかのかなりしっかりしたテストがあり、valgrind を実行してメモリ リークや目立った問題を取り除きました。それはそれ自体でかなりしっかりと機能します。
ただし、Ruby を使用してラップしようとすると、segfault が発生します。ライブラリをラップするプロジェクトの例を次に示します。そのプロジェクトのテストが実行されると、ライブラリへの呼び出しで segfault が発生します。それを実行すると、デバッグのために gdb にロードしたコア アボートが発生しますが、何が問題なのかわかりません。コア ダンプには、問題はこの行にあると書かれていますが、与えられた情報は非常にまばらであり、c ランドでテストを実行するとコードがうまく動作するため、何が原因なのかわかりません。
コア ダンプが言う行は segfaultingです:
rake
テストによってロードされる共有オブジェクトを最終的に生成するプロセスを開始するルート ディレクトリから実行することで再現できます。Cの経験が豊富な人が見て、正しい方向に向けてくれる可能性があることを願っています。
さらに情報が必要な場合はお知らせください。
コア ダンプのスニペット:
ruby - 色付きの http gem をインストールしようとするとエラーが発生する
http で色付けされた gem をインストールしようとしていますが、「http で色付けされた gem インストール」を実行すると、次のエラーが発生しました。
誰かが私を助けることができます:)?
前もって感謝します