swig no module named _example

Я не могу воспроизвести базовый пример 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

8
задан lj8888 4 November 2010 в 09:59
поделиться