Math 发行版中对uu libm_sse2_sincos_u的依赖性
我正在用msvc 2017编译一个静态库,它依赖于Math 发行版中对uu libm_sse2_sincos_u的依赖性,math,visual-c++,visual-studio-2017,linker,Math,Visual C++,Visual Studio 2017,Linker,我正在用msvc 2017编译一个静态库,它依赖于math.h 在调试模式下,我可以使用这个库来构建一个可执行文件。在释放模式下,连续使用cos和sin的函数上会显示对的依赖关系 下面是函数 Complex<double> polar(const double magnitude, const double radian) { const double re = magnitude * cos(radian); const double im = magnitude
math.h
在调试模式下,我可以使用这个库来构建一个可执行文件。在释放模式下,连续使用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);
}
复数极坐标(常数双倍幅值,常数双倍弧度){
const double re=幅值*cos(弧度);
const double im=幅值*sin(弧度);
返回复合体(re,im);
}
代码是用/arch:AVX2
、/fp:fast
和/MT
编译的
这个符号来自哪里?通过快速的谷歌搜索,它似乎与英特尔有某种关联,但我的机器上没有安装英特尔编译器或任何相关的东西
有没有办法追踪这个符号来自哪里?还是一种避免依赖它的方法
谢谢。符号来自MSVC CRT。您的代码计算相同值的sin
和cos
,因此编译器将两个调用优化为一个(sincos
),SSE2版本。链接到CRT后,由于/MT
,所有CRT函数(包括该函数)都将嵌入到可执行文件中
如果您使用不同的参数调用了sin
和cos
,您将得到两个单独的调用\uuuuuu libm\usse2\usin
和\uuuuuu libm\usse2\ucos
()
如果链接函数时出现问题,则可能是发布项目设置已损坏
注意:以开头的函数是为实现保留的,无需记录。此外,MSVC CRT不是开源的(部分是开源的,但不是数学部分)。无法复制。与VStudio社区2017(v15.9.15)配合正常。我不得不把代码简化一点,因为编译器不知道复杂的东西。你在使用第三方LIB吗__libm_sse2_sincos:它是计算相同数字的正弦和余弦。我建议您可以参考。请向我们提供更多详细信息以重现该问题。@CristiFati我能够重现对\u libm\u sse2\u sincos
的调用,但正如我所说,当我使用此代码链接静态库时,我认为我无法在线重现。