Python cythonc++;和std::映射处理 我试图用Cython接口C++类,但作为参数STD的传递有困难::MAP.< /P>

Python cythonc++;和std::映射处理 我试图用Cython接口C++类,但作为参数STD的传递有困难::MAP.< /P>,python,c++,cython,Python,C++,Cython,sample.pxd文件: from libcpp cimport bool from libcpp cimport string from libcpp cimport map from libcpp.utility cimport pair cdef extern from "../SampleProg.h": cdef extern from "<map>" namespace "std": cdef cppclass SampleP

sample.pxd文件:

from libcpp cimport bool
from libcpp cimport string
from libcpp cimport map
from libcpp.utility cimport pair


cdef extern from "../SampleProg.h":
        cdef extern from "<map>" namespace "std":
            cdef cppclass SampleProg:
            SampleProg() except +

            void setInitialTemplateParameters(map[string,XdmValue*] parameters, bool tunnel)

            # Get all parameters as a std::map
            map[string,XdmValue*]& getParameters()

            # Get all properties as a std::map
            map[string,string]& getProperties()
我似乎找不到构造Cython中的C++的例子。我在pxd和pyx文件中都遇到此错误:

void setInitialTemplateParameters(映射[string,XdmValue*]参数, 布尔隧道)

^ sampleProg.pxd:186:46:“map”不是类型标识符


这看起来有点乱,可能离工作还有一点距离。但是,“映射不是类型标识符”错误很容易解释。你想要:

from libcpp.map cimport map

(即从LICPCP C导入图< /Cudio>代码>只得到 map .pxd文件,而不是定义在<>代码> map C++类。这同样适用于
string

这看起来有点乱,可能离工作还有一点距离。但是,“映射不是类型标识符”错误很容易解释。你想要:

from libcpp.map cimport map

(即从LICPCP C导入图< /Cudio>代码>只得到 map .pxd文件,而不是定义在<>代码> map C++类。同样的情况也适用于
string

我对pxd文件中嵌套的
cdefextern感到非常困惑。我怀疑您是否想要内部的
一个?谢谢。我会移除它。由于网络上有很多例子,我对pxd文件中嵌套的来自…
cdefextern感到非常困惑。我怀疑您是否想要内部的
一个?谢谢。我会移除它。由于网上有很多例子。谢谢。现在继续前进。但是我不得不将导入更改为以下内容:
来自libcpp.map cimport map
是的,您是对的。这是
cimport
而不是
import
谢谢。现在继续前进。但是我不得不将导入更改为以下内容:
来自libcpp.map cimport map
是的,您是对的。它是
cimport
而不是
import