我刚开始使用visual studio,我试图通过视觉工作室运行kinect样本。到目前为止,像ColorBasic,DepthBasic-D2D,Depth-D3D这样的所有样本都运行良好,但是当我尝试运行FaceTrackingVisualization时出现错误:
1>d:\programme\dropbox\dropbox\uni\uni\pa_eyetracking\visualstudio\programms\samples\facetrackingvisualization\singleface\kinectsensor.cpp(435): **Error C2668: "abs": ambiguous call to overloaded function**
1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\ucrt\stdlib.h(363): note: kann "__int64 abs(const __int64) throw()" sein
1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\ucrt\stdlib.h(358): note: oder "long abs(const long) throw()"
1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\ucrt\stdlib.h(288): note: oder "int abs(int)"
有人知道如何解决这个错误吗?我只是使用了示例代码,我不明白为什么会出现问题。 我使用的是Visual Studio 2017和SDK v1.8.0。
谢谢。
答案 0 :(得分:0)
当编译器必须从没有显式参数匹配的类型进行类型转换,并且有多个函数具有隐式类型强制转换时,会发生这种情况。在这种情况下,有一些用于int和long和long long的函数,但是传入的类型可能是无符号的或浮点型或双精度型。
您可以根据输入类型将行从std :: abs(myValue)更改为std :: abs(static_cast(myValue)),或强制转换为int或long。