1

我正在开发一个使用 LLVM JIT 后端动态编译代码的 C++ 应用程序。在这个 JIT 编译的代码中,我希望能够调用所有math.h函数,但目前它只适用于其中的一些函数,即fabs存在但fabsf不存在。

似乎 for 的符号fabsmsvsrt.lib运行时库中,但不是fabsf,即使它们都在我系统的math.h. 我是否链接到错误的运行时库?或者我是否需要从其他地方获取“扩展”数学 dll 并链接到它?

  • 平台:Windows 7、Visual Studio Express 2012
  • 在属性中,C/C++ > Code Generation > Runtime library= 多线程 DLL ( /MD)
4

1 回答 1

2

看起来在某些情况下,math.h 像这样定义 fabsf(取自 MSVC2010 express 包含的 math.h)

#define fabsf(x)    ((float)fabs((double)(x)))

您的运行时库可能是以这种方式实现的,这意味着 fabsf 根本不存在,并且“正常” fabsf 通过调用 _fabs() 被 C 预处理器替换。

于 2013-02-15T05:09:41.117 回答