Сопряжение C и Python с помощью swig

Использование учебников, доступных в интернете: http://www.swig.org/papers/PyTutorial98/PyTutorial98.pdf

Я пытаюсь повторно использовать доступные примеры уже, но я иду в ошибку ниже:

swig: не удается выполнить двоичный файл

образец.с

/* example.c */
double Foo = 7.5;
int fact(int n) {
if (n <= 1) return 1;
else return n*fact(n-1);
}

образец.я

// example.i
%module example
%{
#include "headers.h"
%}
int fact(int n);
double Foo;
#define SPAM 42

Ошибка:

$swig -python example.i
swig: cannot execute binary file

Есть указания? Как я мог преодолеть эту ошибку inorder для создания example_wrap.c?

chmod +x example.i
$file example.i
example.i: ASCII C++ program text

1 ответ

  1. Вы следуете учебнику с 1998 года и пытаетесь выполнить двоичный файл для процессоров sparc. Здесь что-то действительно винтажное. Вы, вероятно, пытаетесь воссоздать вещи из архива, где кто-то пытался документировать то, что он сделал >15 лет назад.

    Сделайте себе одолжение и используйте текущие версии swig и python, а также изучите текущую документацию http://www.swig.org/Doc3.0/Python.html#Python . За это время в Swig произошли значительные улучшения, а в python-значительные изменения. c был уже идеален тогда: -). Если у вас есть код C, который вы хотите использовать из python, используйте текущие версии swig и python, и он будет работать.