草庐IT

cython_bbox

全部标签

python - 在 Cython 中传递有界方法作为参数

我试图将一些C++代码包装到Cython中,但我在尝试将类中的方法作为参数传递给函数时遇到了一些麻烦。我不知道它是否更清楚,但是类A表示一个统计模型(因此myAMethod不仅使用传递的参数而且使用许多实例变量)并且B有不同的方法来最小化传递的函数。在C++中,我有这样的风格:A类{民众:双我的方法(双*)};B类{民众:双myBMethod(A&,双(A::*f)(双*)}所以我想做的是在Cython代码中同时使用A和B的实例。我在包装类时没有遇到任何问题,但是当我尝试使用myBMethod时,我不知道如何传递类型为A::*myAMethod的指针如果我这样做:myBMethod(p

python - 用 cython 包装 C++ 类,让基本示例正常工作

我正在尝试了解如何使用cython包装C++代码。为了做到这一点,我从cython网页上的基本C++示例开始,可在此处找到:http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html这看起来很简单,但我无法让它工作。这是我所做的:Rectangle.h和Rectangle.cpp是直接从网页复制过来的矩形.h:namespaceshapes{classRectangle{public:intx0,y0,x1,y1;Rectangle(intx0,inty0,intx1,inty1);~Rectangle();intgetLe

c++ - Cython、C++ 和 gsl

所以我已经用class.cpp和class.h设置了一个c++类。class.cpp使用了gsl中的一些函数(它有#include)将它链接到另一个c++文件main.cpp没有问题,我可以用它编译它g++-omainmain.oclass.o-I/home/gsl/include-lm-L/home/gsl/lib-lgsl-lgslcblas此外,在没有将gsl库包含在class.cpp中的情况下,我已经设法创建了一个使用我在class.cpp中的类的cython文件,并且它可以工作。但是,当我尝试结合这两者时(即在cython中使用c++类,其中c++类使用gsl函数),我不知道

python - Cython 缓冲协议(protocol)示例错误

我正在尝试这个url上的示例。http://cython.readthedocs.io/en/latest/src/userguide/buffer.html为了测试它,我执行以下操作。importpyximportpyximport.install(build_dir='build')importctestm=ctest.Matrix(10)m.add_row()print(m)当我调用m.add_row()函数时,这给了我一个错误TypeError:'int'对象不可迭代在类中add_row定义为fromcpythoncimportPy_bufferfromlibcpp.vecto

python - Cython 扩展类 : How do I expose methods in the auto-generated C struct?

我现有的C++代码定义了一些我需要使用的类,但我需要能够将这些类发送到Python代码。具体来说,我需要在C++中创建类实例,创建Python对象作为这些C++对象的包装器,然后将这些Python对象传递给Python代码进行处理。这只是一个更大的C++程序的一部分,因此最终需要使用C/PythonAPI在C++中完成。为了让我的生活更轻松,我使用Cython定义扩展类(cdef类)作为我的C++对象的Python包装器。我使用的是典型格式,其中cdef类包含指向C++类的指针,然后在创建cdef类实例时对其进行初始化。因为如果我有一个现有的C++对象要包装,我也希望能够替换指针,所以

python - 在 cython 中为 __contains__ 指定 libcpp.string 类型

我正在为一些C++数据结构实现一个cython包装器,它将C++字符串作为键和值。我有一个pxd中的C++方法原型(prototype),用于具有模板化键/值类型的类(抱歉,我从未使用过C++,只使用过C,所以我不确定正确的术语,让我知道如果不清楚)然后我在.pyx文件中定义了一个类,用于从python调用的能力,它包装了my_type[string,string]的一个实例:fromlibcpp.stringcimportstringcdefclassMyType:##Thisfieldisdeclaredin.pxd:#cdefmy_type[string,string]*this

c++ - Cython 不能使用 operator()

当我尝试使用以下Cython代码时,我收到了我在最后发布的有关未定义operator()的错误。看来,当我尝试使用运算符时,Cython不会将其解释为成员函数(注意C++源代码中没有成员访问权限)。如果我尝试调用prng.operator()(),那么Cython将无法转换。在Cython中使用运算符重载是否需要一些特殊的东西?importnumpyasnpcimportnumpyasnpcdefexternfrom"ratchet.hpp"namespace"ratchet::detail":cdefcppclassRatchet:Ratchet()unsignedlongget64

python - 如何在 Cython 中定义 C++ 模板函数类型?

A.hpp//A.hpp#ifndefRECTANGLE_HPP#defineRECTANGLE_HPP#include#includenamespacetest{doubleeuclid_dist(conststd::vector&a){return3.1415926;}template&)>classfoo{public:foo(std::vector_items){items=_items;}~foo(){}voidinside(){std::cout>a){if(a.size()>=1){std::coutitems;};//classfoo}//namespacetest#e

c++ - 使用 C 头文件错误编译 Cython

所以我正在尝试用Cython包装一些C代码。我阅读了有关执行此操作的应用Cython教程(1、2),但这些教程并没有说明如何用Cython包装代码后如何编译代码,因此我有一个错误说它可以'找不到我的C代码。首先,我的cython脚本(“calcRMSD.pyx”):importnumpyasnpcimportnumpyasnpcdefexternfrom"rsmd.h":doublermsd(intn,double*x,double*y)#restofthecodeommited我试图包装的C代码(“rmsd.h”):#include#include#include#includeex

c++ - Cython 代码可以编译成 dll 以便 C++ 应用程序可以调用它吗?

我有一个C++程序,它有一种插件结构:当程序启动时,它会在插件文件夹中寻找具有某些导出函数签名的dll,例如:voidInitPlugin(FuncTable*funcTable);然后程序会调用dll中的函数进行初始化,并将函数指针传递给dll。从那时起,dll就可以与程序对话了。我知道Cython允许您在Python中调用C函数,但我不确定我是否可以编写Cython代码并将其编译为dll,以便我的C++程序可以使用它进行初始化。示例代码会很棒。 最佳答案 在dll中使用cython-module与usingacython-mod