使用静态库时未解析的外部符号"_hypot"

zar*_*tra 5 c++ linker visual-studio-2010

我正在尝试重新编译链接Ruby库的旧游戏,但我不断收到此错误:

ruby18-mt-static-release.lib(math.obj):错误LNK2001:未解析的外部符号_hypot

是否有任何解决方法,这不需要我找到这个库的源代码并重建它?

我正在使用Visual Studio 2010和最新的DirectX SDK.

Mat*_*ise 5

我遇到了类似的问题.显然,hypot曾经是一个可链接的函数,但现在(我有VS 2010)是一个调用_hypot的内联函数.在math.h中,这是完成此操作的唯一函数.我没有我正在使用的现有库的源代码,并且它有链接到它的连字符,所以它不能使用内联版本.如果我自己定义hypot,链接器说它已经定义了.以下工作来解决这个问题:

  • 编辑math.h并注释或ifdef out inline版本的hypot.
  • 将hypot实现为extern"C"double hypot(double x,double y){return _hypot(x,y);}
  • 重新链接

丑陋,但它解决了这个问题.