В моем модуле OOT я написал функцию типа «noblock», и я хотел бы импортировать ее в GRC.
Процесс компиляции и установки прошел хорошо, и я могу использовать функции, которые я написал в Python, используя import my_module as mm
а также mm.my_python_function()
,
Но это не работает для C ++, и у меня есть сообщение об ошибке:
Param — значение (значение): значение «my_module.my_cpp_function ()» не может быть
оценено: у объекта ‘module’ нет атрибута ‘my_cpp_function’
Что мне не хватает, пожалуйста? Это как-то связано со свигом? Как это настроить? Спасибо.
Примечание: я использую Ubuntu 14.04, и GRC был установлен с использованием PyBombs с prefix = /usr/local
Звучит так, будто вы близко, и этот глоток настроен правильно. Я боролся с этим в течение прошлых 2 дней и выработал подход, который, я думаю, подражает тому, что сделано в gr-digital. Однако, прежде чем я изложу все это, вы пытались добавить блок «Импорт» в GRC и затем ввести «импорт my_module» в качестве его «Импорт»?
Я как бы полагаю, так как вы смогли импортировать и использовать модуль в Python.
Вы создали что-то вроде swig / my_module.i? Следуйте gr-digital / swig / packet_header.i в качестве шаблона. Затем убедитесь, что swig / CMakeLists.txt включает my_module.i в оператор install () в конце; снова, посмотрите на gr-digital / swig / CMakeLists.txt для руководства.
Наконец, убедитесь, что ваш swig / _swig.i включает
#include "<module_name>/my_module.h"
и позже
%include "<module_name>/my_module.h"
в конце файла
%include "my_module.i"
Снова, смотрите gr-digital / swig / digital_swig.i для примеров использования packet_header.
Других решений пока нет …