2013-10-21 30 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