Tôi không thể sao chép ví dụ SWIG cơ bản trên cửa sổ. Lỗi của tôi được nêu trong tài liệu SWIG và tôi chắc chắn rằng tôi thực hiện 2 bản sửa lỗi mà họ đề cập đến. Đối với lỗi này:swig không có mô-đun có tên _example
>>> 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
tài liệu SWIG nêu rõ:
quên gạch hàng đầu (_). .
quên gạch hàng đầu (_)> Nếu bạn nhận được thông báo này, nó có nghĩa là
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 (_).
và tôi chắc chắn rằng tôi liên kết với tất việc xây dựng đối tượng bọc và tôi đã tryied: "_example" , "_example.so", "example.dll", "example.so", "example.dll", ngay cả cùng một lúc và "example.py" được tạo trong cùng thư mục với thư viện được chia sẻ, và rằng đường dẫn python chứa thư mục này cho phép gạch dưới hàng đầu ().
ví dụ:
//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
và xây dựng các lệnh:
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
ngay cả khi tôi không sử dụng O3 nó vẫn không hoạt động (Tôi dán xây dựng các lệnh từ một cấu hình Release)
tôi cũng đã cố gắng này và không thành công:
>>> import sys
>>> sys.path.append("/your/module/path")
>>> import example
EDIT:
dường như nó tải dll nếu bạn đổi tên nó thành "_example.pyd", NHƯNG module nạp không chứa "foo_sum" của tôi chức năng
EDIT: nó hoạt động bây giờ, tôi đang sử dụng extern "C" và không bao gồm tiêu đề trong tệp .i
Bạn nên viết câu trả lời của mình trong câu trả lời và đánh dấu câu trả lời là chính xác - (bạn sẽ có được huy hiệu tự học). Nó ngăn chặn những người như tôi tìm kiếm câu hỏi của bạn trên danh sách chưa được trả lời chỉ để tìm thấy mọi thứ đều ổn. – Tom