2011-02-17 61 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數據控制,不管庫做輸出的