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

标签 c++ static-libraries cout

我正在链接一个静态库,它有一个 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/

相关文章:

c++ - 什么会导致 std::cout 在我的字符串中丢失一些字符

c++ - 用C++写入文件

c++ - 为什么 C++ 中的多维数组的这些计算速度不同?

c# - 如何手动将库添加到 visual studio 2017 项目中?

visual-studio-2010 - 在 Visual Studio 2010 中使用 TagLib

使用 setw(x) 而不是 put_money 对齐小数点的 C++ cout 列表

c++ - "endl"和 "\n"之间的区别

任何类型函数的 C++ 列表或 vector

c++ - 在这种情况下, union 成员的成员会调用自己的析构函数吗?

ios - 如何链接 iOS 的静态库