VS2015中无法使用_mm_div_epi8 intrinsic函数的技术求助
解决VS2015中
_mm_div_epi8提示未定义的问题 我来帮你排查这个问题,VS2015里调用_mm_div_epi8提示未定义,大概率是编译选项、头文件引用或者指令集支持的配置问题,具体可以按下面的步骤逐一检查:
确认头文件是否正确引用
_mm_div_epi8属于SSE4.1指令集的内在函数,需要包含对应的头文件。你需要在代码中添加:#include <smmintrin.h>这个头文件是SSE4.1内在函数的专用头,包含它会自动引入底层的SSE相关头文件,比单独引用
<emmintrin.h>更直接。开启对应指令集的编译选项
VS2015默认不会开启SSE4.1及以上的指令集支持,需要手动配置:- 右键你的项目 -> 选择「属性」
- 依次展开「配置属性」->「C/C++」->「代码生成」
- 在「启用增强指令集」下拉菜单中,选择「Streaming SIMD Extensions 4.1 (/arch:SSE4.1)」或者更高版本(比如AVX2,如果你需要更高级的指令集支持)
- 点击「确定」保存配置,重新编译项目
检查函数名拼写与指令集支持
确保你调用的函数名是_mm_div_epi8(注意开头的下划线,C++内在函数区分大小写)。另外需要注意,_mm_div_epi8需要CPU支持SSE4.1指令集,而不是基础的SSE——你提到的CPUID标志可能有误,基础SSE并不包含这个除法指令,需要确认你的目标CPU是否支持SSE4.1。验证编译器版本兼容性
VS2015自带的MSVC编译器(版本19.0)已经完全支持SSE4.1的内在函数,所以只要前面的配置都正确,就不会再出现未定义的提示。
内容的提问来源于stack exchange,提问作者faithful
相关产品推荐
相关产品推荐

