使用Kinect,错误C2668:对过载函数的模棱两可

using Kinect, error C2668: ambiguous call to overloaded function

本文关键字:函数 模棱两可 Kinect 错误 C2668 使用      更新时间:2023-10-16

我刚刚开始使用Visual Studio,我尝试通过Visual Studios运行Kinect样本。到目前为止,诸如ColorBasic,DepthBasic-D2D,Depth-D3D之类的所有样本都很好,但是当我尝试运行FaceTrackingVisalization时,我会遇到一个错误:

1>d:programmedropboxdropboxuniunipa_eyetrackingvisualstudioprogrammssamplesfacetrackingvisualizationsinglefacekinectsensor.cpp(435): **Error C2668: "abs": ambiguous call to overloaded function**
1>c:program files (x86)windows kits10include10.0.16299.0ucrtstdlib.h(363): note: kann "__int64 abs(const __int64) throw()" sein
1>c:program files (x86)windows kits10include10.0.16299.0ucrtstdlib.h(358): note: oder "long abs(const long) throw()"
1>c:program files (x86)windows kits10include10.0.16299.0ucrtstdlib.h(288): note: oder "int abs(int)"

有人知道如何解决该错误?我只是使用了示例代码,我不明白为什么会有问题。我正在使用Visual Studio 2017和SDK v1.8.0。

谢谢。

当编译器必须从没有明确的参数匹配的类型中键入字体时,就会发生这种情况,并且还有更多的函数,其中一个隐含类型的铸件。在这种情况下,int有函数,长而长,但所传递的类型可能是未签名的,也是浮点或双人。

您可以将行从std :: abs(myValue)更改为std :: abs(static_cast(myValue)),或者根据输入类型将其更改为int或long。