OSError: exception: access violation writing,

在使用python3.5_x64,ctype调用c++的.so文件时持续出现了OSError: exception: access violation writing 0x....... 的问题。定位的出错语句是:
pthread_create(&pt[threads], NULL, getBatch, (void*)(¶[threads]));
简单地说就是将线程指针pt[thread]的 地址, 线程哈桑农户getBatch, 参数para{threads]的地址传递创建一个新的线程。但是就是在这个过程中,指针的传递出现了问题,地址发生了漂变还有些甚至变成了负数(我的是超过59bit就变成负数,我也不知道为什么。。。)
在参考了几篇文章之后,尝试了
管理员权限, 点击打开链接
修改函数返回类型(这个对于python调用返回指针估计是有用的,但我现在是c内部调用指针出错), 点击打开链接
换个更换c编译器重新编译,(考虑时编译器字长问题,试一下)
等之后——无效弃疗,直接将其改成非指针形式的单线程,问题果然没有了。
现在总结一下,这个问题是python通过ctypes调用.so文件时,指针的值在内部传递过程中出错。
我的环境是Windows10_x64, python3.5_x64, g++ 4.9.9.2_x64。
如果还有谁遇到这种问题,如果是指针调回的,希望先试一下修改函数的返回类型,不行的话,good luck。


你可能感兴趣的:(Bugs)