cython c ++ undefined对std :: ios_base :: failure的引用

时间:2013-10-31 10:20:56

标签: c++ python cython

我只是编写了cython代码,就像那个

一样简单
# distutils: language = c++

from libcpp.map cimport map,pair
from ios import *



cdef map[int,int] * u = new map[int,int]()

cdef add_item(int n, int x):
    cdef pair[int,int]p = pair[int,int](n,x)
    u.insert(p)

def add(int n, int x):
    add_item(n,x)

添加了像

这样的构建文件
def make_ext(modname, pyxfilename):
    from distutils.extension import Extension
    return Extension(name=modname,
                     sources=[pyxfilename],
                     language='C++')

并运行简单的脚本,如

import hello

有行

导入pyximport pyximport.install()

在我的sitecustomize.py

在脚本执行时,我得到ImportError: Building module hello failed: ['ImportError: /home/odomontois/.pyxbld/lib.linux-x86_64-2.7/hello.so: undefined symbol: _ZTINSt8ios_base7failureE\n']

c++filt _ZTINSt8ios_base7failureE打印typeinfo for std::ios_base::failure

是否有可能找出我应该包含哪些目标文件以及如何在我的pyxbld文件中执行此操作。

1 个答案:

答案 0 :(得分:1)

通过添加

解决
libraries=["stdc++"]

到pyxbld