2016-03-02 10 views
2

В моем модуле OOT я написал функцию типа «noblock», и я хотел бы импортировать ее в GRC.Как импортировать функцию («noblock»), написанную на C++ в GRC

Процесс компиляции и установка прошли хорошо, и я могу использовать функции, которые я написал в python, используя import my_module as mm и mm.my_python_function().

Но это не работает для одного в C++ и у меня есть сообщение об ошибке:

Param - Value (значение): Значение "my_module.my_cpp_function()" не может быть оценен: 'модуль' объект не имеет атрибута 'my_cpp_function'

Что мне не хватает, пожалуйста? Имеет ли это какое-либо отношение к swig? Как настроить его? Спасибо.

Примечание: Я бегу Ubuntu 14.04 и GRC, были установлены с помощью PyBombs с prefix = /usr/local

ответ

0

Это звучит, как вы близки и что SWIG настроен правильно. Я боролся с этим в течение последних 2 дней и придумал подход, который, как мне кажется, имитирует то, что сделано в gr-digital. Однако, прежде чем я прописал все это, попробовали ли вы добавить блок «Импорт» в GRC, а затем ввести «import 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-цифровой /swig/digital_swig.i для примеров с использованием packet_header.