gpt4 book ai didi

python - 如何在 cython 中使用 unordered_map?

转载 作者:太空狗 更新时间:2023-10-29 23:04:47 32 4
gpt4 key购买 nike

我想要一个分步指南,如何在 cython 中使用 unordered_map。

我已将文件 unordered_map.pxd 从 https://gist.github.com/ikuyamada/3265267 包含到 Cython/Includes/libcpp 中并使用其他 3 个文件:

主要.py:

import pyximport;
pyximport.install()
from foo import F

F()

foo.pyx:

from libcpp.unordered_map cimport unordered_map


def F():
cdef unordered_map[int, int] my_map
my_map[1]=11
my_map[2]=12
print my_map[1],my_map[2]

foo.pyxbld:(将 foo.pyx 编译成 C++)

def make_ext(modname, pyxfilename):
from distutils.extension import Extension
return Extension(name=modname,
sources=[pyxfilename],
language='C++')

当我运行 test.py 时,出现错误:

foo.cpp
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\INCLUDE\xlocale(342) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
C:\Users\kitov\.pyxbld\temp.win-amd64-2.7\Release\pyrex\foo.cpp(316) : fatal error C1083: Cannot open include file: 'tr1/unordered_map': No such file or directory

我使用的是 Win7、Python 2.7 64 位、VS2008 Professional。

最佳答案

如果您已经编译了foo,我认为您不需要运行pyximport.install()。自从 pyximport 重新编译源代码以来,这可能搞砸了,但是您没有向 pyximport 提供任何编译器参数,因此它使用默认设置编译(即不知道 foo 是一个 cpp 源文件)。

主要.py:

from foo import F
F()

foo.pyx:<-- 不要忘记 x

#distutils: language = c++
from libcpp.unordered_map cimport unordered_map

def F():
cdef unordered_map[int, int] my_map
my_map[1]=11
my_map[2]=12
print my_map[1],my_map[2]

关于python - 如何在 cython 中使用 unordered_map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21702900/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com