我正在尝试创建一个 ruby 本机扩展,但是当我运行rake
用于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
和/或Rakefile
,但我不确定如何。
我创建了一个简单的存储库,用于在 GitHub 上演示该问题。如果您克隆它并rake
从项目根目录运行,它将失败并出现相同的错误。
一些附加信息:
- 我使用 ruby gem
hoe
通过创建项目sow example_project
- 失败的函数试图调用子目录中定义的函数
ext/example_project/c_example_project
。我的实际项目使用ext/example_project
目录中的 git 子模块,该子模块又将子模块设置为子目录。子模块是具有扁平结构的 ac 项目(根目录中的所有文件)。注意:该措辞可能令人困惑,但关键是定义了一个嵌套的 c 项目,ext/example_project/c_example_project
其中包含我试图调用的方法。
让我知道是否需要任何澄清,我会尽力提供。