IPython支持ctypes吗?
我试图在 IPython 中执行 C 代码(使用 ctypes),但每次调用 C 函数时 IPython 都会崩溃。
环境
- 视窗 10(64 位)
- Python 3.8.5 64 位
- GCC 9.1.0 (tdm-gcc)
最小工作示例
文件test.c:
int func(){
return 10;
}
在命令行中编译:
gcc -shared -o test.dll -fPIC test.c
在同一目录中启动 IPython,然后运行:
In [1]: import ctypes
...: lib = ctypes.CDLL("test.dll")
...: lib.func()
Out[1]: 10
输出Out[1]是正确的,但 IPython 在Out[1]: 10打印后立即崩溃。(有时它会在Out[1]: 10打印之前崩溃)
题
IPython 支持 ctypes 吗?
如果是,为什么会出现上述问题?
如果不是这样,是否有在 IPython/Jupyter Notebook 中使用 ctypes 的解决方法?
更新
- 在 WSL 上尝试了相同的代码(在同一台机器上);IPython 没有崩溃。
- 尝试了 Tim Roberts 的解决方案(更改
CDLL为WinDLL;见评论);不工作。
更新:问题已解决
从 TDM-GCC 切换到 Mingw-w64,这以某种方式解决了问题。