Convertir un proyecto de C ++ a x64 con referencias __m64
Entonces, cuando comencé la conversión y establecí el objetivo en 'x64', obtuve 7 elementos externos sin resolver. Dos ejemplos:
error LNK2001: unresolved external symbol _m_empty ...CONVOLUTION_2D_USHORT.obj CONVOLUTION_2D_USHORT
error LNK2001: unresolved external symbol _mm_setzero_si64 ...CONVOLUTION_2D_USHORT.obj CONVOLUTION_2D_USHORT
Así que intenté investigar esto un poco más y descubrí que no le gusta el __m64 dentro de los archivos de encabezado: específicamente mmintrin.h (puede haber otros). En mi hora de aficionado con C ++, debido a que no he tenido problemas con el lenguaje en años, (generalmente estoy en el departamento de C #), intenté editar los archivos de encabezado y reemplazar __m64 con __m128i ?? !!. No sé cuál es la ruta correcta, para obtener esta y otras DLL para compilar contra MachineX64. Después de editar y poner la fuente del encabezado en mi directorio local, todavía no me permite compilar haciendo clic derecho ... nuevamente-Amateur-hour. Ha habido algunas personas que han hecho preguntas similares, pero no pude encontrar la correcta para mí.
Aquí hay una muestra de 'mmintrin.h' con __m64 no compatible ...
typedef union __declspec(intrin_type)_CRT_ALIGN(8) __m64
{
unsigned __int64 m64_u64;
float m64_f32[2];
__int8 m64_i8[8];
__int16 m64_i16[4];
__int32 m64_i32[2];
__int64 m64_i64;
unsigned __int8 m64_u8[8];
unsigned __int16 m64_u16[4];
unsigned __int32 m64_u32[2];
} __m64;
/* General support intrinsics */
void _m_empty(void);
__m64 _m_from_int(int _I);
int _m_to_int(__m64 _M);
__m64 _m_packsswb(__m64 _MM1, __m64 _MM2);
__m64 _m_packssdw(__m64 _MM1, __m64 _MM2);
__m64 _m_packuswb(__m64 _MM1, __m64 _MM2);
__m64 _m_punpckhbw(__m64 _MM1, __m64 _MM2);
__m64 _m_punpckhwd(__m64 _MM1, __m64 _MM2);
__m64 _m_punpckhdq(__m64 _MM1, __m64 _MM2);
__m64 _m_punpcklbw(__m64 _MM1, __m64 _MM2);
__m64 _m_punpcklwd(__m64 _MM1, __m64 _MM2);
__m64 _m_punpckldq(__m64 _MM1, __m64 _MM2);
...