Я пытаюсь создать собственное расширение ruby, но когда я запустил rake
, который использует ext/example_project/extconf.rb
для создания моего проекта и выполнения моих тестов под test/
, я получаю следующую ошибку при запуске тестов:ruby native extension: undefined symbol
./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
из корня проектов.
Некоторая дополнительная информация:
- Я использовал рубиновый камень
hoe
создать проект с помощьюsow example_project
- Функции провала пытается вызвать функцию, определенную в подкаталоге
ext/example_project/c_example_project
. В моем фактическом проекте используется подмодуль git из каталогаext/example_project
, который, в свою очередь, устанавливает подмодуль в качестве подкаталога. Подмодуль представляет собой проект c с плоской структурой (все файлы в корневом каталоге). Примечание: Эта формулировка может вводить в заблуждение, но ключевым моментом является то, что существует вложенный проект c, определенный вext/example_project/c_example_project
, у которого есть методы, которые я пытаюсь вызвать.
Сообщите мне, если требуется какое-либо разъяснение, и я сделаю все возможное, чтобы обеспечить его.
Просто последуйте за ними, если для этого есть что-то лучше, чем 'hoe', пожалуйста, дайте мне знать. Я использовал [учебник] (https://tenderlovemaking.com/2009/12/18/writing-ruby-c-extensions-part-1.html) в качестве точки запуска, но ему 7 лет, поэтому, возможно, что-то лучше приходите с тех пор! – JesseBuesking