繁体   English   中英

使用boost_python导入错误

[英]Import errors with boost_python

当我尝试加载boost :: python构建的模块时,在Cygwin上出现这些错误:

>>> import Whatever
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: Permission denied

对于我构建的其他模块(C或C ++),我没有此类错误。

这是我的最小模块:

#include <boost/python.hpp>
void whatever(){}
BOOST_PYTHON_MODULE(Whatever)
{
    using namespace boost::python;
    def("whatever", whatever);
}

我以这种方式构建它:

g++ -shared -o Whatever.dll Whatever.cpp -I/usr/include/python2.7 \
       -lboost_python -lpython2.7

所有涉及的.dll都具有读取和执行权限。

我只使用cygwin安装的软件,而没有二进制或源程序包中的任何软件。 GCC版本是6.3.0,Boost是1.60。

完全相同的配置在Linux上也可以使用,而以前在Cygwin上也可以使用。

当我通过strace (在Cygwin上)运行Python时,得到以下信息:

<tons of output>
--- Process 35608 loaded C:\cygwin64\bin\cygboost_python-1_60.dll at 00000003f7ec0000
--- Process 35608 loaded C:\cygwin64\bin\cyggcc_s-seh-1.dll at 00000005e1570000
--- Process 35608 loaded C:\cygwin64\bin\cygstdc6.dll at 00000005d4da0000
--- Process 35608, exception c0000005 at 00000003f7ee8527
--- Process 35608 thread 48604 exited with status 0xc0000005
--- Process 35608 thread 13756 exited with status 0xc0000005
--- Process 35608 thread 45304 exited with status 0xc0000005
--- Process 35608 exited with status 0xc0000005
Segmentation fault

(这就是strace.exe本身崩溃)

当我使用gdb运行它时,我得到了:

Thread 1 "python2.7" received signal SIGSEGV, Segmentation fault.
0x00000003f7ee8527 in cygboost_python-1_60!_ZTv0_n40_N5boost16exception_detail10clone_implINS0_19error_info_injectorINS_17bad_function_callEEEED1Ev ()
   from /usr/bin/cygboost_python-1_60.dll
(gdb)

如何开始对它进行故障排除?

我将不愿采用调试信息从源代码构建Python和/或Boost。

这似乎是由于GCC 6.3.0错误引起的。

最小复制:

#include <typeinfo>

int main()
{
    typeid(int).name();
}

cygwin下的gcc 6.3.0下的该程序segfaults(无论如何在我的机器上)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM