1

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

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

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

更新:好吧,包装器是这个的改编版本

4

1 回答 1

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自己。)

于 2011-02-17T18:25:43.013 回答