Nie mogę odtworzyć podstawowego przykładu SWIG w oknach. Mój błąd jest podany w dokumentach SWIG i jestem pewien, że robię 2 poprawki, o których wspominają. Z tego błędu:swig no module o nazwie _przykład
>>> 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
dokumentacja SWIG wyraźnie stwierdza:
zapomnieć wiodącą podkreślenia (_). .
zapomnieć wiodącą podkreślenia (_)> Jeśli pojawi się ten komunikat, oznacza to, że
you either forgot to compile the wrapper code into an extension module or you didn't give the extension module the right name. Make sure that you compiled the wrappers into a module called example.so. And don't forget the leading underscore ().forget the leading underscore (_).
i jestem pewien, że mogę połączyć z najnowszej kompilacji obiektu okład i ja tryied: „_example” , "_example.so", "example.dll", "example.so", "example.dll", nawet wszystkie naraz, oraz że wygenerowany "example.py" znajduje się w tym samym folderze co biblioteka współdzielona, i że ścieżka Pythona zawiera ten katalog, aby znaleźć wiodący znak podkreślenia ().
PRZYKŁAD:
//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
i kompilacji komendy:
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
nawet jeśli nie używam opcja -O3 to nadal nie działa (I wklejony kompilacja poleceń z konfiguracji release)
I próbowałem też i bez powodzenia:
>>> import sys
>>> sys.path.append("/your/module/path")
>>> import example
EDIT:
najwyraźniej ładuje dll jeśli przemianować go na „_example.pyd”, ale załadowany moduł nie zawiera moja funkcja „foo_sum”
EDIT: działa teraz używam extern „C” i nie włączając nagłówków w pliku .i
Powinieneś zapisać swoją odpowiedź w odpowiedzi i oznaczyć ją jako poprawną - (otrzymujesz odznakę samouczka). To powstrzymuje ludzi takich jak ja, szukających twojego pytania na liście bez odpowiedzi, tylko po to, aby wszystko było w porządku. – Tom