Как получить свой существующий проект MSVC для компиляции с компилятором Visual Studio 2022 Clang? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как получить свой существующий проект MSVC для компиляции с компилятором Visual Studio 2022 Clang? [закрыто]

Сообщение Anonymous »

У меня есть существующий проект C ++, который хорошо собирает MSVC, и я пытаюсь заставить его компилировать в Visual Studio 2022 с LLVM (CLANG-CL). В настоящее время я использую стандартный предварительный просмотр языка C ++ ISO C ++ 23, хотя я не думаю, что это необходимо и предпочел бы C ++ 20. < /p>
Visual Studio Installer сообщает мне, что у меня есть «C ++ Clang Compiler для Windows (19.1.5)», а «поддержка MSBuild для сотни для компиляции CLANG). компилировать ошибки. Некоторые популярные: < /p>
e0020 идентификатор "__bf16" не определен (в avx512bf16intrin.h, avxintrin.h и другие) < /p>
e0020. Глобальная область не имеет "int8_t" (in cstdint, xytility, _msvc_m.mpc. Другие) < /p>
e0020 идентификатор setjtmp_float128 не определен (в setjtmp.h) < /p>
Что мне нужно сделать, чтобы преодолеть горб? Конечно, ответ прост и дублируется на этом, но я гугл в течение 3 или 4 часов и, очевидно, не нашел правильных ключевых слов для этого вопроса. Я начинал подозревать, что мои проблемы во многом связаны с VCL Agner, поэтому я просто бросил его пример -диспетчер в новый проект и набрал джекпот ошибки компиляции. Примечание, по сравнению с точным кодом Agner, я делаю некоторые незначительные изменения файлов instrset.h и instrset_detect.cpp, чтобы положить Clang через MSC. Код Agner имеет Clang ниже MSC и отлично работает для компиляции в автономном кланге, но не в Visual Studio Clang. Agner's Original instrset.h и instrset_detect.cpp сохраняются в подкаталории VCL_AGNER. Если вы их используете, вы все равно получаете большинство одинаковых ошибок. Он будет генерировать все ошибки Intellisense «ошибки», но он будет компилировать и работать правильно. Мой реальный код и код, связанный выше, не будут компилироваться, но ошибки фатальной сборки - это ошибки линкера, которые не возникают в MSVC, только при компиляции в Clang. Поэтому я полагаю, что должен сосредоточиться на ошибках ссылки. < /P>
#include
#include
//#include

//#define SIMD_SIZE_SPN 8
#define SIMD_SIZE_SPN 4
//#define SIMD_SIZE_SPN 2

int main() {

printf("\nhello ms clang\n");

double xarr[SIMD_SIZE_SPN] = {};

#if SIMD_SIZE_SPN == 8
__m512d vec1, vec2;
vec1 = _mm512_setr_pd(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0);
vec2 = _mm512_setr_pd(8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0);
vec1 = _mm512_mul_pd(vec1, vec2); //8, 14, 18, 20, 20, 18, 14, 8
_mm512_storeu_pd(xarr, vec1);
#elif SIMD_SIZE_SPN == 4
__m256d vec1, vec2;
vec1 = _mm256_setr_pd(1.0, 2.0, 3.0, 4.0);
vec2 = _mm256_setr_pd(4.0, 3.0, 2.0, 1.0);
vec1 = _mm256_mul_pd(vec1, vec2); //4, 6, 6, 4
_mm256_storeu_pd(xarr, vec1);
#else
__m128d vec1, vec2;
vec1 = _mm_setr_pd(1.0, 2.0);
vec2 = _mm_setr_pd(2.0, 1.0);
vec1 = _mm_mul_pd(vec1, vec2); //2, 2
_mm_storeu_pd(xarr, vec1);
#endif

printf("\nlast = %8.2f \n", xarr[SIMD_SIZE_SPN - 1]); //8, 4, 2

return 0;
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... o-2022-cla
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»