我正在使用WINDOWS机器中的Borland Turbo C ++编译器,并在C中编写了一段代码。
我想在我的一个计算中使用互补误差函数erfc()。
但是,当我运行代码时,错误是 “链接器错误:模块filename.c中未定义的符号_erfc”
这里的问题是erfc()和erf()应该包含在math.h库中。 但是,我的这些不可用。
有人可以告诉我如何在程序中包含这些功能吗?
谢谢
答案 0 :(得分:4)
您可能需要传递一些特殊选项才能链接到数学库。
Borland Turbo C ++也可能不支持erfc()
功能。
在C中,1990 ISO C标准不包括erfc()
函数。它被1999年的标准添加到语言中。 (我不确定C ++。)我认为Borland Turbo ++相当陈旧。
尝试编写一个调用sqrt()
的小程序。如果你可以让它工作,erfc()
仍未被识别,那么Borland不支持它。
在后一种情况下,要么获得一个更新的编译器(有许多免费的编译器,这在任何情况下都可能是个好主意),或者找到erfc()
的开源实现。
答案 1 :(得分:1)
您需要链接数学库。在Unix机器上,这是通过将-lm
标志传递给链接器来完成的,这意味着“链接到名为libm的库”。你可能需要为Borland做类似的事情,但我不确定细节。希望这会让你朝着正确的方向前进。