Cython示例中的语法错误

ChangeMyName

我正在尝试在此页面上构建Cython示例

我知道我的帖子与另一个问题非常相似但是,我生成了完全不同的错误消息。

这是我的代码:

矩形文件

#include "Rectangle.h"

using namespace shapes;

Rectangle::Rectangle(int X0, int Y0, int X1, int Y1){
    x0 = X0;
    y0 = Y0;
    x1 = X1;
    y1 = Y1;
}

Rectangle::~Rectangle() {}

int Rectangle::getLength() {
    return (x1 - x0);
}

int Rectangle::getHeight() {
    return (y1 - y0);
} 

int Rectangle::getArea() {
    return (x1 - x0) * (y1 - y0);
}

void Rectangle::move(int dx, int dy) {
    x0 += dx;
    y0 += dy;
    x1 += dx;
    y1 += dy;
}

矩形

namespace shapes {
    class Rectangle {
    public:
    int x0, y0, x1, y1;
    Rectangle(int x0, int y0, int x1, int y1);
    ~Rectangle();
    int getLength();
    int getHeight();
    int getArea();
    void move(int dx, int dy);
    };
 }

矩形.pyx

# distutils: language = c++
# distutils: sources = Rectangle.cpp

cdef extern from "Rectangle.h" namespace "shapes":
    cdef cppclass Rectangle:
        Rectangle(int, int, int, int)
        int x0, y0, x1, y1
        int getLength()
        int getHeight()
        int getArea()
        void move(int, int)

cdef class PyRectangle:
    cdef Rectangle *thisptr
    def __cinit__(self, int x0, int y0, int x1, int y1):
        self.thisptr = new Rectangle(x0, y0, x1, y1)
    def __dealloc__(self):
        del self.thisptr
    def getLength(self):
        return self.thisptr.getLength()
    def getHeight(self):
        return self.thisptr.getHeight()
    def getArea(self):
        return self.thisptr.getArea()
    def move(self, dx, dy):
        self.thisptr.move(dx, dy)

setup.py

from distutils.core import setup
from Cython.Build import cythonize

setup(ext_modules = cythonize(
       "rectangle.pyx",            # our Cython source
       sources=["Rectangle.cpp"],  # additional source file(s)
       language="c++",             # generate C++ code
      ))

我必须承认我犯了同样的错误,即一开始就缺少以下几行rectangle.pyx

# distutils: language = c++
# distutils: sources = Rectangle.cpp

在阅读完此处的帖子后,我意识到并修复了它。

但是,当我使用以下语句编译C ++类时,

python rectangle.pyx

我收到以下错误消息:

File "rectangle.pyx", line 4
    cdef extern from "Rectangle.h" namespace "shapes":
              ^
SyntaxError: invalid syntax

为什么会弹出此错误?我可以知道如何解决它吗?

非常感谢。:)

================================================== =

PS:当我尝试运行时setup.py,出现g++错误:

我跑了:

python setup.py build_ext

g++误差

error: command 'g++' failed with exit status 1
ChangeMyName

根据@Bakuriu的建议,我发现以下过程有效:

假设您正在使用命令提示符

  1. cd到包含.pyxsetup文件的目录。
  2. 使用Cython构建扩展名,例如

    Cython -a rect.pyx --cplus

  3. 使用Python设置扩展名,例如

    Python setup.py build_ext --inplace

使用扩展程序时,您可以:

  1. 将.pyd文件目录附加到系统路径

    import sys

    sys.path.append("C:\\yourDirectory")

  2. 根据需要使用扩展名:)

    import Rectangle

    r = Rectangle.PyRectangle(1,2,3,4)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Cython示例中的语法错误

来自分类Dev

Lightbend 示例语法错误

来自分类Dev

ReactJS中的语法错误

来自分类Dev

coffeescript中的语法错误

来自分类Dev

Erlang中的语法错误

来自分类Dev

IE中的语法错误

来自分类Dev

coffeescript中的语法错误

来自分类Dev

Conda中的语法错误

来自分类Dev

声明中的语法错误

来自分类Dev

继承中的语法错误

来自分类Dev

IE中的语法错误

来自分类Dev

VBA 中的语法错误

来自分类Dev

awk 中的语法错误

来自分类Dev

具有主键的Peewee示例中的SQL语法错误

来自分类Dev

ReactJS教程中的示例“ server.php”具有语法错误

来自分类Dev

参数param ['pagetoken']是示例Google报告代码中的语法错误吗?

来自分类Dev

为什么在此示例代码中没有出现语法错误?

来自分类Dev

VBA for Dummies示例,显示消息框,显示语法错误

来自分类Dev

尝试使用支付墙示例时出现语法错误

来自分类Dev

bash语法错误(“ <”中的令牌错误)

来自分类Dev

C中的词法错误与语法错误

来自分类Dev

C中的词法错误与语法错误

来自分类Dev

子查询中的MySQL语法错误

来自分类Dev

函数中的OCaml语法错误

来自分类Dev

IndentationError是Python中的语法错误吗?

来自分类Dev

函数中if语句的Postgresql语法错误

来自分类Dev

HAML语法错误中的Rails表单

来自分类Dev

SQL中UPDATE命令的语法错误

来自分类Dev

该行中的语法错误是什么