Я не могу воспроизвести базовый пример SWIG на windows. Моя ошибка указана в документации SWIG, и я уверен, что внесу 2 исправления, о которых они упоминают. Для этой ошибки:
>>> import example
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "example.py", line 2, in ?
import _example
ImportError: No module named _example
в документации SWIG четко указано:
забудьте начальный символ подчеркивания (_).
забудьте начальный символ подчеркивания (_).> Если вы получили это сообщение, это означает, что
вы либо забыл скомпилировать код оболочки в модуль расширения или вы не дали расширение модулю правильное имя. Удостоверься что вы скомпилировали обертки в модуль называется example.so. И не Забудьте о начальном подчеркивании (). Забудьте о начальном подчеркивании (_).
, и я уверен, что установил ссылку на последнюю сборку объекта переноса и попробовал: "_example", "_example.so", " example.dll »,« example.so »,« example.dll », даже все сразу, и что созданный« example.py »находится в той же папке, что и общая библиотека, и что путь python содержит этот каталог забывает начальное подчеркивание ().
ПРИМЕР:
//example.h
int foo_sum(int a, int b);
.
//example.cpp
int foo_sum(int a, int b) {
return a + b;
}
.
//example.i
%module example
%{
#include "example.h"
%}
#include "example.h
и команды сборки:
gcc -IV:\temp\example\external\include\Python -O3 -Wall -c -fmessage-length=0 -oexample_wrap.o ..\example_wrap.c
g++ -IV:\temp\example\external\include\Python -O3 -Wall -c -fmessage-length=0 -oexample.o ..\example.cpp
g++ -LV:\temp\example\external\lib -shared -oexample.dll example_wrap.o example.o -lpython26
даже если я не использую -O3, он все равно не работа (я вставил команды сборки из конфигурации выпуска)
Я также пробовал это, но безуспешно:
>>> import sys
>>> sys.path.append("/your/module/path")
>>> import example
РЕДАКТИРОВАТЬ:
очевидно загружает dll, если вы переименуете ее в "_example.pyd", НО загруженный модуль не содержит мой "foo_sum "функция
РЕДАКТИРОВАТЬ: теперь он работает, я использую extern «C» и не включаю заголовки в файл .i