Python ctypes DLL 标准输出

2 投票
1 回答
1493 浏览
提问于 2025-04-18 04:38

我正在用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;
}

其实你需要对那个字符串做点别的事情,而不是直接返回它;这部分我就留给你自己去处理了。注意,一旦返回了字符串指针,它就会变得无效。不过,只要你在返回后释放内存,做一个简单的内存分配是可以的。

撰写回答