我正在链接一个静态库,它有一个std::cout
包装器,如果我从应用程序代码中使用它就可以工作,但库的内部输出(以完全相同的方式使用)不显示任何输出。 / p>
也许这不重要,但我正在使用Qt Creator和qmake项目文件来构建。我已将console
添加到应用程序的CONFIG
(甚至尝试使用静态库,但它没有效果)。
可能出现什么问题,我该如何解决这个问题?谢谢!
更新:好的,包装器是this one的改编版本:
答案 0 :(得分:2)
std::cout
包装器无法隐式“到达”另一个库。您是否考虑过完全重定向cout
?类似于 src :
int main() {
std::streambuf* cout_sbuf = std::cout.rdbuf(); // save original sbuf
std::ofstream fout("cout.txt");
std::cout.rdbuf(fout.rdbuf()); // redirect 'cout' to a 'fout'
// ...
std::cout.rdbuf(cout_sbuf); // restore the original stream buffer
}
通过这种方式,您可以控制馈送到std::cout
的数据,无论库是否正在执行输出(当然,除非他们自己重定向std::cout
。)