Tôi đang trong quá trình học cách sử dụng SWIG trên Windows.Tạo một DLL từ một tệp cpp bọc với SWIG
Sau đây là C++ mã của tôi:
/* File : example.cxx */
#include "example.h"
#define M_PI 3.14159265358979323846
/* Move the shape to a new location */
void Shape::move(double dx, double dy) {
x += dx;
y += dy;
}
int Shape::nshapes = 0;
double Circle::area(void) {
return M_PI*radius*radius;
}
double Circle::perimeter(void) {
return 2*M_PI*radius;
}
double Square::area(void) {
return width*width;
}
double Square::perimeter(void) {
return 4*width;
}
Đây là tập tin tiêu đề của tôi:
/* File : example.h */
class Shape {
public:
Shape() {
nshapes++;
}
virtual ~Shape() {
nshapes--;
};
double x, y;
void move(double dx, double dy);
virtual double area(void) = 0;
virtual double perimeter(void) = 0;
static int nshapes;
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) { };
virtual double area(void);
virtual double perimeter(void);
};
class Square : public Shape {
private:
double width;
public:
Square(double w) : width(w) { };
virtual double area(void);
virtual double perimeter(void);
};
Đây là tập tin giao diện của tôi:
/* File : example.i */
%module example
%{
#include "example.h"
%}
%include "example.h"
tôi đã quản lý để quấn của tôi mã C++ với lệnh sau trong Cygwin sử dụng SWIG:
$swig -c++ -python -o example_wrap.cpp example.i
Câu hỏi của tôi là, làm cách nào để tạo một DLL từ thời điểm này trở đi bằng cách sử dụng mã được tạo (example_wrap.cpp)? Bất kỳ ý tưởng?
tôi đã cố gắng tạo ra một DLL với Visual Studio C++ 2010 nhưng tôi nhận được lỗi build:
LINK : fatal error LNK1104: cannot open file 'python27_d.lib
Tôi khá mới để sử dụng SWIG vì vậy bất kỳ trợ giúp sẽ được đánh giá cao.
Cảm ơn!
Cảm ơn bạn Jackson cho câu trả lời nhanh chóng của bạn! :) Tôi đã kiểm tra các tập tin Python và nó xuất hiện, như bạn đã nói, có một python27.lib nhưng không phải là một python27_d.lib. Vì vậy, tôi đoán câu hỏi tiếp theo sẽ là ... không ai biết một cách để làm cho Visual Studio C++ 2010 chấp nhận phiên bản phát hành của Python lib ??? – user1449530
Nếu bạn mở các thuộc tính của dự án và đi đến Linker-> Input, bạn sẽ thấy trong phần phụ thuộc bổ sung một tham chiếu đến Python27_d.lib. Chỉnh sửa nó thành Python27.lib và thử biên dịch lại. – Jackson
Cảm ơn bạn một lần nữa Jackson vì đã dành thời gian của bạn! Tôi nhìn lại trong Visual Studio 2010 Linker> Đầu vào nhưng không tìm thấy Python27_d.lib. Cuối cùng, tôi quyết định gắn bó với Cygwin. Cảm ơn bạn anyway! – user1449530