我使用ctypes从python调用DLL函数,只是我想从dll调用中捕获stdout。我想在不改变dll代码本身的情况下重定向很多printf。
我将如何做到这一点?
答案 0 :(得分:1)
您似乎需要制作wrapper。尝试这样的事情:
char* CallSomeFunc()
{
ostrstream ostr;
cout.rdbuf(ostr.rdbuf());
SomeFunc();
char* s = ostr.str();
return s;
}
您实际上需要使用该字符串执行不同的操作而不是返回它;我会把那部分留给你。字符串指针一返回就会变为无效,但只要在返回后释放内存,就可以进行相当简单的分配。