У меня есть приложение C# windows, которое вызывает управляемую dll C++, которая, в свою очередь, вызывает родную dll C++. Кажется, что некоторые проблемы с производительностью возникают в коде на языке C++, поэтому я делаю некоторые простые профилирования. Я хотел бы сбросить результаты профилирования, чтобы окно вывода Visual Studio подбирало его. Я думал, что printf
выполнит трюк, но ничего не появится ни в окне вывода, ни в окне Immediate. Я также пробовал fprintf
, но это тоже не работает.Перенаправить stdout в окно вывода Visual Studio из родной C++ dll
2
A
ответ
7
Попробуйте OutputDebugString
OutputDebugString является довольно простой, поэтому я, как правило, добавить следующие мои проекты, чтобы сделать его работать как Printf (убедившись, что во избежание наката размер буфера):
#if (_VERBOSE)
void DebugPrintf (LPTSTR lpFormat, ...)
{
TCHAR szBuf[1024];
va_list marker;
va_start(marker, lpFormat);
_vstprintf(szBuf, lpFormat, marker);
OutputDebugString(szBuf);
va_end(marker);
}
#endif
+1 : Добавлено преимущество использования OutputDebugString(); вы можете просматривать сообщения в DbgView, что означает, что вы можете просматривать сообщения, даже если ваше приложение работает в режиме деблокирования, а не под отладчиком. –
Это делает трюк, спасибо! – fre0n