【发布时间】:2019-09-10 14:05:10
【问题描述】:
我正在使用 msvc 2017 编译一个静态库,该库依赖于 math.h。
在调试模式下,我可以使用这个库来构建一个可执行文件。在发布模式下,对__libm_sse2_sincos_ 的依赖出现在连续使用cos 和sin 的函数上。
这是函数
Complex<double> polar(const double magnitude, const double radian) {
const double re = magnitude * cos(radian);
const double im = magnitude * sin(radian);
return Complex<double>(re, im);
}
代码用/arch:AVX2、/fp:fast和/MT编译。
这个符号从何而来?从 Google 的快速搜索来看,它似乎与英特尔有关,但我的机器上没有安装英特尔编译器或任何相关的东西。
有没有办法追踪这个符号的来源?或者是一种避免依赖它的方法?
谢谢。
【问题讨论】:
-
无法重现。 OK 与 VStudio Community 2017 (v15.9.15) 配合使用。我不得不稍微简化一下代码,因为编译器不知道Complex。你在使用一些 3rd-party libs 吗? [SO]: How to create a Minimal, Reproducible Example (reprex (mcve)).
-
__libm_sse2_sincos:计算同数的正余弦。建议您参考link。请向我们提供更多详细信息以重现该问题。
-
@CristiFati 我能够重现对
_libm_sse2_sincosgodbolt.org/z/Yqbe1P 的调用但正如我所说,当我使用此代码链接静态库时发生这种情况,我认为我无法在线重现.
标签: math visual-c++ visual-studio-2017 linker