Estoy en proceso de aprender a usar SWIG en Windows.Creando una DLL desde un archivo cpp envuelto con SWIG
La siguiente es mi código C++:
/* 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;
}
Este es mi archivo de cabecera:
/* 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);
};
Este es mi archivo de interfaz:
/* File : example.i */
%module example
%{
#include "example.h"
%}
%include "example.h"
he logrado envolver mi Código de C++ con el siguiente comando en Cygwin usando SWIG:
$swig -c++ -python -o example_wrap.cpp example.i
Mi pregunta es, ¿cómo creo una DLL de aquí en adelante utilizando el código generado (example_wrap.cpp)? ¿Algunas ideas?
intenté crear una DLL con C++ 2010 Visual Studio, pero me sale el error de compilación:
LINK : fatal error LNK1104: cannot open file 'python27_d.lib
Soy bastante nuevo en el uso TRAGO por lo que cualquier ayuda sería muy apreciada.
Gracias!
Gracias a Jackson por su pronta respuesta! :) Comprobé los archivos de Python y parece que, como dijiste, hay un python27.lib pero no un python27_d.lib. Así que supongo que la próxima pregunta sería ... ¿Alguien sabe de una forma de hacer que Visual Studio C++ 2010 acepte la versión de lanzamiento de Python lib? – user1449530
Si abre las propiedades del proyecto y va a Enlazador-> Entrada debería ver en las Dependencias Adicionales una referencia al Python27_d.lib. Edite esto para que sea el Python27.lib e intente volver a compilar. – Jackson
¡Gracias de nuevo Jackson por su tiempo! Miré hacia atrás en Visual Studio 2010 Linker> Input pero no encontré Python27_d.lib. Al final, decidí quedarme con cygwin. ¡Gracias de todos modos! – user1449530