2013-10-21 28 views
0

無法看到日誌我有一個C++的解決方案,它使用x264.lib。我已經設置了params.i_log_level = X264_LOG_DEBUG;以便能夠從x264庫中看到一些日誌記錄。但是,在Visual Studio Output窗口的調試過程中,我看不到任何與x264相關的日誌。X264 LIB

如何我看到這些日誌?

回答

1

啓用日誌級別,你離開默認日誌處理程序生成調試輸出。這寫入stderr並且輸出不會出現在Visual Studio輸出窗口上。

static void x264_log_default(void *p_unused, int i_level, const char *psz_fmt, 
    va_list arg) 
{ 
    // ... 
    fprintf(stderr, "x264 [%s]: ", psz_prefix); 
    vfprintf(stderr, psz_fmt, arg); 

您需要提供自己的日誌功能params.pf_log並已通過以OutputDebugString API數據。這樣它就會出現在VS輸出窗口上。

+0

非常感謝。我明白了。我實現了我自己的函數: X264_log(void *的p_unused,INT i_level,爲const char * psz_fmt,va_list的ARG) 這個函數被調用成功但是參數ARG包含一些奇怪的符號,而不是正常的字符。因此,當將「arg」傳遞給OutputDebugString時,在VS Output窗口中,我看到「???????」或其他奇怪的符號。 – mkd156

+0

你做錯了什麼,據說你是在處理Unicode字符串錯誤。你可以看看x264的'x264_log_default'實現來看看它究竟做了什麼。或者,您可能需要調用'OutputDebugStringA'來訪問ANSI參數字符串。 –

+0

我使用了OutputDebugStringA。這裏是我的簡單功能,無論日誌級別如何,我都想在「輸出」窗口中顯示日誌。 靜態無效X264_log(無效* p_unused,INT i_level,常量字符* psz_fmt,va_list的ARG) { OutputDebugStringA(ARG); }; 但這裏是我在輸出中看到的「¨ë½8q?」''''''''''''' 在調試過程中,我觀看「arg」字符數組內容,我看到一個負數的日誌,我認爲這是不正常的。 – mkd156