Visual Studio C ++ ARM-使用三角函数时生成错误

问题描述

我一直在Visual Studio中为Android创建动态库(.so文件)。最近,我在标题中遇到了问题。我使用 asin cos atan2 功能对其进行了测试。我尝试创建一个空项目,以查看错误是否是由于项目中的其他原因引起的,但该错误仍然存​​在。我感到特别奇怪的是,至少对于asin,如果我确保该参数在[-1,1]范围内,如下所示,错误就会停止。

double r31 = complicatedAlgorithm();
if (r31 > 1)
    r31 = 1;
if (r31 < -1)
    r31 = -1;
double result = asin(r31);

我无法使用cos和atan2复制此行为。

配置

  • C语5.0
  • GNU静态STL库(默认选择不会发生,但这不是我的项目的选项)

错误消息

  • 对“ asin”的未定义引用
  • clang.exe:错误:链接器命令失败,退出代码为1(使用-v查看调用)
  • 标识符__fp16未定义(仅在主项目中。在测试项目中,我没有得到此标识符,但其他方面的行为相同)。

观察

  • 如果编译器未执行优化(-O0模式),则asin的钳制解决方案不会起作用
  • 如果将钳位代码转换为返回钳位值的函数,则错误将停止,但是如果值通过引用传递,则错误仍然存​​在。
  • 添加我在互联网上看到的 -mfp16-format = ieee 标志会导致未知的参数错误。
  • 对于cos :如果直接给出参数(例如cos(1)),或者它是在编译时知道其值的变量,则不会引发错误。
  • 使用asinf,cosf和atan2f不能解决问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...