Невозможно вывести через std :: cout из статической библиотеки - PullRequest
1 голос
/ 17 февраля 2011

Я связываю статическую библиотеку, которая имеет оболочку std::cout, которая работает, если я использую ее из кода приложения, но не из внутренних выходных данных библиотеки (используемых точно так же) показывают какие-либо выходные данные.

Может быть, это не важно, но я использую файлы проекта Qt Creator и qmake для сборки. Я добавил console к приложению CONFIG (и даже попробовал это для статической библиотеки, но это не дало эффекта).

Что может быть не так и как я могу это исправить? Спасибо!

ОБНОВЛЕНИЕ : ну, оболочка является адаптированной версией этой :

1 Ответ

2 голосов
/ 17 февраля 2011

Оболочка 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.

...