错误:无法从'int'转换为'__m128'

时间:2014-01-27 18:30:12

标签: c++ visual-studio-2005 libvpx

我正在尝试使用Visual Studio 2005在Win64上编译libvpx-v1.3.0。但是,我最终得到以下错误,

..\libvpx-1.3.0\vp9\common\x86\vp9_loopfilter_intrin_sse2.c(36) : error C2440: 'function' : cannot convert from 'int' to '__m128'

你能帮我解决这个问题吗?

编辑:在此错误发生之前,我收到两条警告

2>..\libvpx-1.3.0\vp9\common\x86\vp9_loopfilter_intrin_sse2.c(35) : warning C4013: '_mm_castps_si128' undefined; assuming extern returning int
2>..\libvpx-1.3.0\vp9\common\x86\vp9_loopfilter_intrin_sse2.c(35) : warning C4013: '_mm_castsi128_ps' undefined; assuming extern returning int

可能是因为没有为Visual Studio 2005定义'_mm_castps_si128''_mm_castsi128_ps'吗?

由于

1 个答案:

答案 0 :(得分:1)

答案在此链接中给出:https://groups.google.com/a/webmproject.org/forum/#!topic/webm-discuss/C5nzgPiPDF4

我通过添加这些函数的定义来扩展vpx_ports / emmintrin_compat.h中的文件:

#if (_MSC_VER == 1400)
// For Visual Studio 2005
__inline __m128i _mm_castps_si128(__m128 PS) { union { __m128 ps; __m128i pi; } c; c.ps = PS; return c.pi; }
__inline __m128 _mm_castsi128_ps(__m128i PI) { union { __m128 ps; __m128i pi; } c; c.pi = PI; return c.ps; }
__inline __m128d _mm_castsi128_pd(__m128i PI) { union { __m128i pi; __m128d pd; } c; c.pi = PI; return c.pd; }
#endif

此更改解决了问题。