【问题标题】:Adding functions erf() and erfc() to math.h _ basics of C .将函数 erf() 和 erfc() 添加到 math.h _ C 基础知识。
【发布时间】:2011-10-05 03:03:50
【问题描述】:

我在 WINDOWS 机器上使用 Borland Turbo C++ 编译器,并用 C 编写了一段代码。

我想将互补误差函数 erfc() 用于我的一项计算。

但是,当我运行代码时,错误是 “链接器错误:模块文件名.c 中未定义符号 _erfc”

这里的问题是 erfc() 和 erf() 应该包含在 math.h 库中。 但是,这些在我的中不可用。

谁能告诉我如何在我的程序中包含这些功能?

谢谢

【问题讨论】:

    标签: c++ linker-errors turbo-c++


    【解决方案1】:

    您可能需要传递一些特殊选项才能链接到数学库。

    也有可能 Borland Turbo C++ 不支持 erfc() 函数。

    在 C 语言中,1990 ISO C 标准不包括erfc() 函数。它是由 1999 年标准添加到语言中的。 (我不确定 C++。)我认为 Borland Turbo++ 相当老了。

    尝试编写一个调用sqrt() 的小程序。如果你可以让它工作,而 erfc() 仍然无法识别,那么 Borland 不支持它。

    在后一种情况下,要么获取更新的编译器(有许多免费的编译器,无论如何这可能是个好主意),要么找到erfc() 的开源实现。

    【讨论】:

    • 嗨 sqrt 有效,我已经尝试编写自己的 erfc 函数......但值似乎是错误的.. 还从网上获得了另一个 erfc 代码,但也没有给出正确的值.. . 如果你们有 erfc 的代码,那应该很棒!
    • 你能说出最近的编译器吗?
    • Visual C++ Express 和 GCC 是免费的
    【解决方案2】:

    您需要链接到数学库。在 Unix 机器上,这是通过将 -lm 标志传递给链接器来完成的,这意味着“链接到名为 libm 的库”。您可能需要为 Borland 做类似的事情,但我不确定细节。希望这会让您朝着正确的方向前进。

    【讨论】:

    • 我绝对没有朝着正确的方向前进。那里没有与链接器相关的选项。我可以迁移到 Windows 上的其他编译器以避免错误吗?
    • 查看 Microsoft 的 Visual C++ Express microsoft.com/visualstudio/en-us/products/2010-editions/… 或 MinGW mingw.org/wiki/Getting_Started ,Visual C++ 在 Windows 上可能更容易上手。
    • 嗨 Bobby:我安装了 Visual C++,但我仍然收到同样的错误:1>xxx.cpp(49): error C3861: 'erfc': identifier not found God,我现在该怎么办?
    • 你试过这个:#include using boost::math::erfc;
    • 如果我这样做,它会说,“致命错误 C1083:无法打开包含文件:'boost\math\special_functions\erf.hpp':没有这样的文件或目录”...
    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多