Tag: swig

Использование SWIG и API Python / C для переноса функции, которая возвращает std :: map

Я хочу обернуть подпрограмму C ++, которая возвращает std::map целых чисел и указателей на экземпляры класса C ++. У меня возникли проблемы с тем, чтобы это работало с SWIG и было бы признательно за любую помощь, которая может быть предложена. Я попытался довести этот вопрос до его сути на простом примере. Заголовок test.h определяется следующим […]

Как использовать swig только для скомпилированной dll и только для заголовочного файла

Я прочитал некоторые документы из документации SWIG (связанные с кодом C ++), но не могу понять, возможно ли генерировать модуль расширения Python в случае, если я скомпилировал dll (без исходного кода) и заголовочный файл со всеми функциями, объявленными в длл. Если у кого-то есть такая же проблема и решить ее, можете ли вы предоставить какой-нибудь […]

Неразрешенные внешние символы, строящие расширение Python C

В настоящее время я пытаюсь создать C-расширение в Windows. Ошибки, по-видимому, связаны с тем, что не обнаруживают «стандартные» символы в файле python27.dll. Как разрешить эти недостающие символы? Нужно ли мне как-то сообщать компилятору, где найти python27.dll или что-то не так с моим python27.lib? Моя настройка такова: Windows 7 64-бит Python 2.7.4 Numpy 1.7 Swig 2.0.9 […]

Эффективное решение для вызова математических функций C из Python

Я слышал о различных способах вызова функций C из кода Python, таких как ctypes, cython, swig, Boost.python и т. Д. У каждого есть плюсы и минусы, конечно. Мой вопрос об эффективности. Мне нужно вызвать числовые функции C из Python. Типичным примером такой функции C является: double f(double x){ return sin(x)+cos(x)-pow(2,x) + x*x; } Вызов должен […]

Как перегрузить оператор индекса с помощью swig Python

У меня есть класс, который содержит std::vector<Foo> где Foo – класс, содержащий ключ, значение, комментарий и т. Д. Обратите внимание, что есть причина, по которой я использую вектор, а не словарь. Я перегрузил оператор индекса в C ++, так что foos["Key Name"] будет искать вектор для объекта Foo с ключом, соответствующим «Key Name» (где foos […]

C ++ API в Python – SWIG, редизайн или передача сообщений

Ок, быстрый и, надеюсь, простой вопрос здесь … У меня большой C ++ API, который в основном представляет собой API сокетов с протоколом типа верхнего уровня. Это пакет распределенных источников от компании. Весь исходный код записывается в заголовочные файлы (включая реализацию функций) по какой-то нечетной причине (я думаю, они считают, что разработчикам проще импортировать H-файл […]

Как создать псевдоним класса Python через Swig?

Я создал C ++-библиотеку и успешно использовал swig, чтобы сделать ее доступной через python. Templating широко используется в библиотеке, и каждый тип шаблона сопоставляется с собственным классом python с помощью swig: %template(Imageint) Image<int>; %template(Imagedouble) Image<double>; Тем не менее, мне бы очень хотелось иметь шаблон «default», используемый python, так что a = Image("filename") создает Image<double> без […]

вектор <вектор <двойной>> аргумент с swig и python

Я пытаюсь понять, как использовать SWIG, чтобы обернуть функцию c ++, которая возвращает вектор 2d на python. У меня есть файл functions.h #include <vector> std::vector< std::vector<double> > array_mean(std::vector< std::vector<double> > array) { std::vector< std::vector<double> > mean_array( rows, std::vector<double>(cols)); …. return mean_array; } В файле интерфейса functions.i у меня есть %module functions %{ #include "functions.h" %} […]

(SWIG C ++ to Python) предупреждение 301: ключевое слово class использовано, но не в режиме C ++

Я пытаюсь скомпилировать расширение C ++ для python. Я создал файл интерфейса foo.i, который выглядит так: %module foo %include "typemaps.i" // For pointers to primitive types %include "std_string.i" // std::string mapping %apply const std::string& {std::string* foo}; // data types containing std::string members %{ #define SWIG_FILE_WITH_INIT #include "../path/to/c++/header/files/foo_header.h" %} %apply double *OUTPUT { double *p, double […]

ошибка Swig: Неопределенный символ

У меня проблемы с swig, и для меня это похоже, что он говорит, что один из элементов данных моего кода является неопределенным символом. Я нашел ответы в Интернете о том, как исправить функции, но это меня озадачивает. Моя ошибка: Traceback (most recent call last): File "./test1.py", line 5, in <module> from volumes import * File […]

Python - лучший язык программирования в мире.