【问题标题】:iOS: sin() Symbols not found for architecture i386iOS:sin() 未找到架构 i386 的符号
【发布时间】:2016-03-28 08:25:09
【问题描述】:

我正在尝试在 iPhone(模拟器)应用程序中使用 math.h 中的 sin()、cos()、tan()。

我需要更改哪些内容才能链接标准 C 数学库函数?

我正在从 .cpp 文件进行调用。

例如

#include <math.h>
..
float f = tan( p1 );

链接器输出:

  "tan(float)", referenced from:

      GetTan(float) in myfuncs.o

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

我是否缺少所需的框架?

【问题讨论】:

    标签: c++ ios iphone xcode linker


    【解决方案1】:

    在某些环境中,您需要显式链接 libm 以获得超越数学函数,因此请尝试将 -lm 添加到链接器标志中。

    【讨论】:

    • 这只是在“其他链接器标志”中添加“-lm”或“lm”的问题吗?
    • 是的,这可能是 Xcode 中最好的方法。
    • 优秀 - cosf()、sinf() 等运行良好。这是跨平台代码,所以我将添加一个#define 宏来将 iOS 版本更改为 sinf() 等。
    • 抱歉,我刚刚注意到这是 C++。不是 C (使用 C &lt;math.h&gt; 标头让我失望) - 所以只需使用 &lt;cmath&gt; 而不是 &lt;math.h&gt; 然后你不需要担心参数/返回类型 - 只需使用 sincostan 等。我现在已经删除了答案的那一部分,因为它与 C++ 并不真正相关。
    • 你没问题 - 我的代码是 C 和 C++ 的混合体 - 大多数文件都是 .cpp 和一些 .c 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    相关资源
    最近更新 更多