gpt4 book ai didi

python - 使用 SWIG 从包装的 cpp 文件创建 DLL

转载 作者:太空狗 更新时间:2023-10-29 22:00:51 24 4
gpt4 key购买 nike

我正在学习如何在 Windows 上使用 SWIG。

以下是我的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;
}

这是我的头文件:

/* 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);
};

这是我的接口(interface)文件:

 /* File : example.i */
%module example

%{
#include "example.h"
%}

%include "example.h"

我已经使用 SWIG 在 Cygwin 中使用以下命令包装了我的 C++ 代码:

  $swig -c++ -python -o example_wrap.cpp example.i 

我的问题是,如何使用生成的代码 (example_wrap.cpp) 从现在开始创建 DLL?有任何想法吗?

我尝试使用 Visual Studio C++ 2010 创建 DLL,但出现构建错误:

LINK : fatal error LNK1104: cannot open file 'python27_d.lib

我对使用 SWIG 还很陌生,因此非常感谢任何帮助。

谢谢!

最佳答案

在Configuration Properties->C/C++->Preprocessor->Preprocessor Definitions添加MS_NO_COREDLL定义;或在包含 python.h 之前添加#define MS_NO_COREDLL 行。

#define MS_NO_COREDLL
#include <Python.h>

关于python - 使用 SWIG 从包装的 cpp 文件创建 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11311877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com