2014-01-27 4 views
0

Я пытаюсь скомпилировать libvpx-v1.3.0 на Win64 с помощью Visual Studio 2005. Но, в конечном итоге получить следующее сообщение об ошибке,Ошибка: не удается преобразовать из «межд» до «» __m128

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

Может вы, пожалуйста, помогите мне решить это?

EDIT: Перед этой ошибки, я получаю два предупреждения,

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 

Может быть, потому что '_mm_castps_si128' и '_mm_castsi128_ps' не определены для Visual Studio 2005?

Благодаря

+1

Вы следовали этому руководству: http://www.webmproject.org/code/build-prerequisites/? – Plexico

+0

Да, я выполнил все шаги, приведенные в руководстве. – Josh

ответ

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 

Это изменение фиксируется проблема.