无法从静态库通过std :: cout输出

时间:2011-02-17 18:17:00

标签: c++ static-libraries cout

我正在链接一个静态库,它有一个std::cout包装器,如果我从应用程序代码中使用它就可以工作,但库的内部输出(以完全相同的方式使用)不显示任何输出。 / p>

也许这不重要,但我正在使用Qt Creator和qmake项目文件来构建。我已将console添加到应用程序的CONFIG(甚至尝试使用静态库,但它没有效果)。

可能出现什么问题,我该如何解决这个问题?谢谢!

更新:好的,包装器是this one的改编版本:

1 个答案:

答案 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。)