我已经用 g++ 编写和调试了一些 AVX 代码,现在我正试图让它与 MSVC 一起工作,但我一直在
错误 LNK2019:未解析的外部符号 __mm256_setr_epi64x 在函数“private: union __m256i __thiscall avx_matrix::avx_bit_mask(unsigned int)const”(?avx_bit_mask@avx_matrix@@ABE?AT__m256i@@I@Z)
引用的代码是
...
#include <immintrin.h>
...
/* All zeros except for pos-th position (0..255) */
__m256i avx_matrix::avx_bit_mask(const std::size_t pos) const
{
int64_t a = (pos >= 0 && pos < 64) ? 1LL << (pos - 0) : 0;
int64_t b = (pos >= 64 && pos < 128) ? 1LL << (pos - 64) : 0;
int64_t c = (pos >= 128 && pos < 192) ? 1LL << (pos - 128) : 0;
int64_t d = (pos >= 192 && pos < 256) ? 1LL << (pos - 256) : 0;
return _mm256_setr_epi64x(a, b, c, d);
}
...
- 我启用
/arch:AVX
了,但它没有任何区别。 - 我的机器绝对支持 AVX——它与我用于原始 Linux 项目的机器相同。
- 此外, http: //msdn.microsoft.com/en-us/library/hh977022.aspx列出
_mm256_setr_epi64x
了可用的内在函数。
任何帮助将非常感激。