Python ctypes DLL 标准输出
我正在用ctypes从Python调用一个DLL函数,我想捕捉这个DLL调用的输出信息,也就是标准输出(stdout)。这个DLL里面有很多printf语句,我希望能把这些输出重定向到其他地方,而不想修改DLL的代码。
我该怎么做呢?
1 个回答
1
看起来你需要做一个包装器。可以试试下面这样的做法:
char* CallSomeFunc()
{
ostrstream ostr;
cout.rdbuf(ostr.rdbuf());
SomeFunc();
char* s = ostr.str();
return s;
}
其实你需要对那个字符串做点别的事情,而不是直接返回它;这部分我就留给你自己去处理了。注意,一旦返回了字符串指针,它就会变得无效。不过,只要你在返回后释放内存,做一个简单的内存分配是可以的。