ruby ネイティブ エクステンションを作成しようとしていますが、rake
which usesを実行ext/example_project/extconf.rb
してプロジェクトをビルドし、 でテストを実行するとtest/
、テストの実行時に次のエラーが発生します。
./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
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 プロジェクトが定義されていることです。
明確化が必要な場合はお知らせください。提供できるよう最善を尽くします。