私はルビーネイティブ拡張を作成しようとするんだけど、私は私のプロジェクトをビルドし、test/
の下で私のテストを実行するためにext/example_project/extconf.rb
を使用するrake
を実行したときにテストが実行されたときに、私は次のエラーを取得します:ルビーネイティブ拡張:未定義のシンボル
./home/jbuesking/.rbenv/versions/2.3.0/bin/ruby: symbol lookup error:
/home/jbuesking/repositories/example_project/lib/example_project/example_project.so: undefined symbol: some_function
私は私のファイルが正しくリンクされて、私はいくつかの方法で私のextconf.rb
および/またはRakefile
を変更する必要がありますが、私はどのようにわからないことされていないかなり確信しています。
私は問題over on GitHubを示す簡単なリポジトリを作成しました。クローンして、プロジェクトルートからrake
を実行すると、同じエラーで失敗します。
いくつかの追加情報:
- 私は失敗した機能は、サブディレクトリ
ext/example_project/c_example_project
で定義された関数を呼び出すようにしようとしているsow example_project
- を経由してプロジェクトを作成するためにルビーの宝石
hoe
を使用。私の実際のプロジェクトではext/example_project
ディレクトリのgitサブモジュールを使用し、サブモジュールをサブディレクトリとして設定します。サブモジュールは、フラットな構造(ルートディレクトリのすべてのファイル)を持つcプロジェクトです。 注::その文句は混乱するかもしれませんが、キーポイントはext/example_project/c_example_project
で定義されたネストされたCプロジェクトがあり、私が呼び出そうとしているメソッドがあります。
明確化が必要な場合は教えてください。私はそれを提供するために最善を尽くします。
これを行うには「ホー」よりも優れたものがあれば、私に教えてください。私は[チュートリアルを使って](https://tenderlovemaking.com/2009/12/18/writing-ruby-c-extensions-part-1.html)を打ち上げポイントとしていましたが、7年前ですそれ以来一緒に来てください! – JesseBuesking