我最近一直在使用 python 学习 swig 的基础知识,遇到了一个奇怪的错误,在命令窗口中运行 python 时导入模块会返回此错误。
>>> import simpFunc
Readline internal error
Traceback (most recent call last):
File "D:\Dev\Python\winx64\lib\site-packages\pyreadline\console\console.py", line 671, in hook_wrapper_23
res = ensure_str(readline_hook(prompt))
File "D:\Dev\Python\winx64\lib\site-packages\pyreadline\rlmain.py", line 342, in readline
return self.mode.readline(prompt)
File "D:\Dev\Python\winx64\lib\site-packages\pyreadline\modes\emacs.py", line 116, in readline
self._print_prompt()
File "D:\Dev\Python\winx64\lib\site-packages\pyreadline\rlmain.py", line 298, in _print_prompt
n = c.write_scrolling(self.prompt, self.prompt_color)
File "D:\Dev\Python\winx64\lib\site-packages\pyreadline\console\console.py", line 289, in write_scrolling
w, h = self.size()
TypeError: 'NoneType' object is not iterable
尽管在此错误之后可以正确使用模块功能,并且在脚本中运行它时根本没有错误。
我想知道是否有人可以对此事有所了解。我目前正在使用 Visual Studio 2008 x64 命令提示符来构建和链接它。Python 2.7.2 版,Swig 2.0.4 版
它不仅适用于这个特定示例,我还尝试了几个都有此错误的 c 示例。
下面列出的是我正在使用的文件。
simpFunc.cpp
#include "simpFunc.h"
void printNum(int aNum)
{
std::cout << "num is " << aNum << std::endl;
}
简单函数
#include <iostream>
void printNum(int aNum);
简单函数
/* File : simpFunc.i */
%module simpFunc
%{
#include "simpFunc.h"
%}
%include "simpFunc.h"
下面是我用来创建 .pyd 的命令
swig.exe -python -c++ simpFunc.i
cl /c simpFunc.cpp simpFunc_wrap.cxx /I"D:\Dev\Python\winx64\include"
link /dll /out:.\_simpFunc.pyd /LIBPATH:D:\Dev\Python\winx64\libs simpFunc.obj simpFunc_wrap.obj