Я пытаюсь запустить простой проект с OpenMP. Поскольку Visual Studio поддерживает только OpenMP 2, поэтому я пытаюсь скомпилировать и запустить проект с использованием LLVM clang-cl, поставляемого с Visual Studio 2019. Компиляция выглядит нормально, но на этапе компоновки компоновщик не может разрешить функции OMP.
Это мой код, есть только 1 файл:
#include <stdio.h>
void fn() {
#pragma omp parallel num_threads(5)
{
int i;
#pragma omp task depend(in : i)
for (i = 0; i < 1; i++) {
printf("task\n");
}
}
}
int main() {
printf("hello\n");
fn();
}
Свойства моего проекта Visual Studio:
Windows SDK version
: 10.0 (последняя установленная версия ) (10.0.18362.0) Platform toolset
: LLVM (clang-cl) C/c++ - Command Line - Additional Options
: /Zc:twoPhase- -Xclang -fopenmp -v
Linker - Additional Dependencies
: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\Llvm\lib\libomp.lib
и C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\Llvm\lib\libiomp5md.lib
Linker - Additional Library Directories
: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\Llvm\lib
Linker - Command Lines - Additional Options
: -fopenmp -verbose
Журнал ошибок при запуске проекта
1>lld-link : error : undefined symbol: __kmpc_global_thread_num
1>>>> referenced by D:\Repositories\Test-clang\Test-clang\Source.cpp:4
1>>>> x64\Debug\Source.obj:(void __cdecl fn(void))
1>
1>lld-link : error : undefined symbol: __kmpc_push_num_threads
1>>>> referenced by D:\Repositories\Test-clang\Test-clang\Source.cpp:7
1>>>> x64\Debug\Source.obj:(void __cdecl fn(void))
1>
1>lld-link : error : undefined symbol: __kmpc_fork_call
1>>>> referenced by D:\Repositories\Test-clang\Test-clang\Source.cpp:7
1>>>> x64\Debug\Source.obj:(void __cdecl fn(void))
1>
1>lld-link : error : undefined symbol: __kmpc_omp_task_alloc
1>>>> referenced by D:\Repositories\Test-clang\Test-clang\Source.cpp:10
1>>>> x64\Debug\Source.obj:(.omp_outlined._debug__)
1>
1>lld-link : error : undefined symbol: __kmpc_omp_task_with_deps
1>>>> referenced by D:\Repositories\Test-clang\Test-clang\Source.cpp:10
1>>>> x64\Debug\Source.obj:(.omp_outlined._debug__)
1>Done building project "Test-clang.vcxproj" -- FAILED.
Я использую Visual Studio Community 2019. Так как мне настроить проект для работы OpenMP?
Я также попытался скомпилировать, как в этом ответе , и это работает.
clang -fopenmp -o Source.obj -c Source.cpp
clang -fopenmp -o Source.exe Source.obj
Это работает и для clang-cl
clang-cl -Xclang -fopenmp -o Source.obj -c Source.cpp
clang-cl /clang:-fopenmp -o Source.exe Source.obj -v
Но я не знаю, как заставить Visual Studio построить проект, используя описанный выше способ.