2011-02-17 41 views
0

我正在链接一个静态库,它有一个std::cout包装器,如果我从应用程序代码使用它,但不使用库的内部输出(正好用于相同的时尚)显示任何输出。不能通过std :: cout从静态库输出

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

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

UPDATE:好,包装是this one改编版本:

+5

代码说话(当然,除非它们会重定向std::cout自己。)胜过言辞。 – 2011-02-17 18:20:53

+0

根据链接的帖子的代码,数据只有经过该类时才会被过滤;包装器无法触摸直接输出到`std :: cout`的输出。 – fbrereto 2011-02-17 21:33:37

回答

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数据控制,不管库做输出的