我正在链接一个静态库,它有一个 std::cout
包装器,如果我从应用程序代码中使用它,它就可以工作,但不是库的内部输出(以完全相同的方式使用) ) 显示任何输出。
也许这并不重要,但我正在使用 Qt Creator 和 qmake 项目文件来构建。我已将 console
添加到应用程序的 CONFIG
中(甚至对静态库进行了尝试,但没有任何效果)。
可能出了什么问题,我该如何解决?谢谢!
更新:好吧,包装器是 this one 的改编版本:
最佳答案
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
他们自己。)
关于c++ - 无法通过 std::cout 从静态库输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032881/