[英]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.