gpt4 book ai didi

c++ - 在 Windows 上为 Matlab 构建 libspline - 对重载函数的模糊调用 'pow'

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:49 26 4
gpt4 key购买 nike

我正在尝试为 Windows 上的 Matlab 构建 libspline,可在此处获取:

http://ttic.uchicago.edu/~smaji/projects/libspline-release1.0.tar.gz

我收到以下错误:

>> make
additiveModel.cpp
additiveModel.cpp(156) : error C2668: 'pow' : ambiguous call to overloaded function
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\math.h(583): could be 'long double pow(long double,int)'
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\math.h(535): or 'float pow(float,int)'
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\math.h(497): or 'double pow(double,int)'
while trying to match the argument list '(int, int)'

C:\USR\ML\MATLAB~1\BIN\MEX.PL: Error: Compile of 'additiveModel.cpp' failed.

??? Error using ==> mex at 208
Unable to complete successfully.

Error in ==> make at 4
mex -O -largeArrayDims -c additiveModel.cpp

如何解决?

最佳答案

additiveModel.cpp 中的第 156 行是这样的:

dimwts[2*i] = 1.0/pow(i+1,reg);

在这里您可以看到传递给 pow 的两个参数都是 int。由于 math.h 中没有重载需要两个 intpow,因此重载解析失败,因为最佳可行函数在这种情况下不是唯一的。

您可以通过将第一个参数转换为合适的类型来解决此问题,例如 double:

dimwts[2*i] = 1.0/pow(static_cast<double>(i+1),reg);

关于c++ - 在 Windows 上为 Matlab 构建 libspline - 对重载函数的模糊调用 'pow',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com