我不确定您要什么,但据我了解,我会说:只需公开您需要的内容(此处为State
类型)。
在您的.pyx
或您的.pxd
:
(假设您问题中的代码是名为 的文件的一部分my_eigen.h
)
# Expose State
cdef extern from "some_path/my_eigen.h" namespace "xyz" :
cdef cppclass States:
# Expose only what you need here
pass
完成上述包装后,您State
可以在 Cython 代码中随意使用它。
# Use State as is in your custom wrapped class
cdef extern from "my_class_header.h" namespace "my_ns" :
cdef cppclass MyClassUsingStates:
double getElement(States s, int row, int col)
...
例子:
这里我的需要是:拥有一个 python 处理程序,std::ofstream
并且不需要公开它的任何方法(所以我没有公开任何方法,但它本来是可能的......)
cdef extern from "<fstream>" namespace "std" :
cdef cppclass ofstream:
pass
cdef class Py_ofstream:
cdef ofstream *thisptr
def __cinit__(self):
self.thisptr = new ofstream()
def __dealloc__(self):
if self.thisptr:
del self.thisptr
注意:这里我直接将它用作我的单个块.pyx
(没有附加.pyd
)。
如果误解了问题,请告诉我...