Ошибка: невозможно преобразовать из int в __m128

0

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

..\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
    Вы следовали этому руководству: webmproject.org/code/build-prerequisites ?
  • 0
    Да, я выполнил все шаги, указанные в руководстве.
Теги:
libvpx
visual-studio-2005

1 ответ

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню