在Cython中使用C++ STL maps

4
我将使用中文进行翻译,以下是需要翻译的内容:

我尝试在Cython类中使用地图,但是Cython编译器会出错。

这里有一个示例,展示了我的问题以及Cython报告的错误。

Cython文件pyx

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

cdef class MyDict:
      cdef:
            map[string, int] components

      def __setitem__(self, key, value):
            self.components[key] = value

      def __getitem__(self, key):
            return self.components[key]

Python文件

from pyximport import install
install()

from dic_class import MyDict

m = MyDict()

m["home"] = 5

print m["home"]

Cython报告的错误

致命错误:utility文件不存在


请正确缩进;如果这些是C++的映射,请在标签和主题行中注明。我们不想将其与Python自己的map函数混淆。 - hpaulj
1个回答

3
你没有进行任何设置,使其编译为C++而不是C。 C编译器将无法找到C ++标准库(因此出现“没有这样的文件或目录”错误)。
你需要通过设置.pyxbld文件来告诉pyximport使用C ++而不是C。 或者,您可以使用C ++模式中的setup.py代替pyximport。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接