C++ 错误C2668从站点对重载函数代码的调用不明确http://h264bitstream.sourceforge.net/

C++ 错误C2668从站点对重载函数代码的调用不明确http://h264bitstream.sourceforge.net/,c++,c,visual-studio-2010,visual-c++,C++,C,Visual Studio 2010,Visual C++,我运行了一个从网站下载的h264解析器程序 当我运行代码时,我得到以下错误 错误C2668:“日志”:对重载函数的调用不明确 1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(575):可以是“长双日志(长双日志)” 1> c:\ProgramFiles\microsoft visual studio 10.0\vc\include\math.h(527):或“浮点日志(float)” 1> c:\program

我运行了一个从网站下载的h264解析器程序

当我运行代码时,我得到以下错误

错误C2668:“日志”:对重载函数的调用不明确 1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(575):可以是“长双日志(长双日志)”
1> c:\ProgramFiles\microsoft visual studio 10.0\vc\include\math.h(527):或“浮点日志(float)”
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(120):或“双日志(double)”

在下面的代码中

else if( pps->slice_group_map_type == 6 )
        {
            pps->pic_size_in_map_units_minus1 = bs_read_ue(b);
            for( i = 0; i <= pps->pic_size_in_map_units_minus1; i++ )
            {
                **pps->slice_group_id[ i ] = bs_read_u(b, ceil( log2( pps->num_slice_groups_minus1 + 1 ) ) ); // was u(v)**
            }
        }
    }
else if(pps->slice\u group\u map\u type==6)
{
pps->pic\u size\u in\u map\u units\u minus1=bs\u read\u ue(b);
对于(i=0;i pic_size_in_map_units_min减1;i++)
{
**pps->slice\u group\u id[i]=bs\u read\u(b,cell(log2(pps->num\u slice\u groups\u minus1+1));//was u(v)**
}
}
}
错误C2668:“日志”:对重载函数的调用不明确 1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(575):可以是“长双日志(长双日志)”
1> c:\ProgramFiles\microsoft visual studio 10.0\vc\include\math.h(527):或“浮点日志(float)”
1> c:\ProgramFiles\microsoft visual studio 10.0\vc\include\math.h(120):或“双日志(double)”
1> 尝试匹配参数列表“(int)”时 在下面的代码中

else if( pps->slice_group_map_type == 6 )
        {
            pps->pic_size_in_map_units_minus1 = bs_read_ue(b);
            for( i = 0; i <= pps->pic_size_in_map_units_minus1; i++ )
            {
                **pps->slice_group_id[ i ] = bs_read_u(b, ceil( log2( pps->num_slice_groups_minus1 + 1 ) ) ); // was u(v)**
            }
        }
    }
if(pps->num\u slice\u groups\u minus1>0&&
pps->slice\u group\u map\u type>=3&&pps->slice\u group\u map\u type slice\u group\u change\u cycle=
**b读(b,ceil)(log2(pps->pic大小,单位为1+
pps->slice_group_change_rate_minus1+1));//u(v)//修复添加2吗**
}
错误C2668:“日志”:对重载函数的调用不明确 1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(575):可以是“长双日志(长双日志)”
1> c:\ProgramFiles\microsoft visual studio 10.0\vc\include\math.h(527):或“浮点日志(float)”
1> c:\ProgramFiles\microsoft visual studio 10.0\vc\include\math.h(120):或“双日志(double)”
1> 尝试匹配参数列表“(int)”时

bs\u write\u ue(b,pps->pic\u size\u in\u map\u units\u minus1);
对于(i=0;i pic_size_in_map_units_min减1;i++)
{
**b_write_(b,ceil(log2(pps->num_slice_groups_minus 1+1)),pps->slice_groups_id[i];//was u(v)**
}
}

我应该如何解决它?

将您对log2的调用修改为如下所示:

log2( (double)(pps->num_slice_groups_minus1 + 1) )

尝试使用1.0而不是1作为参数输入。
log(…)
的参数应为双精度、浮点或长双精度变量类型。如果不是这样,则变量
num\u slice\u groups\u mins1
也应为双精度、浮点或长双精度


示例:
log2(pps->num\u slice\u groups\u minus1+1.0)

您的代码中没有
log
,而是
log2
。为什么?一个猜测是您将整数传递给
log
,编译器无法决定您想要的是浮点结果还是双精度结果。可能的重复(来自同一用户)对
log
的调用起源于何处?我认为这是VS(idk,如果它是std行为或不是std行为)的一个已知问题,如果您可以直接执行显式转换。。。
log2( (double)(pps->num_slice_groups_minus1 + 1) )