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