在继续学习C++的过程中,我尝试使用MinGW工具链在Eclipse (C/C++ Mars 4.5.0)中启用OpenMP。我只想说,我不知道该怎么做。在项目设置中向C/C++编译器选项添加-fopenmp标志是不够的。我尝试使用GNU Make Builder编译并运行OpenMP提供的以下测试代码:
#include <omp.h>
#include <stdio.h>
int main()
{
#pragma omp parallel printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
}Eclipse会显示出以下内容:
Building file: ../OpenMPTest.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -fopenmp -MMD -MP -MF"OpenMPTest.d" -MT"OpenMPTest.d" -o "OpenMPTest.o" "../OpenMPTest.cpp"
../OpenMPTest.cpp: In function 'int main()':
../OpenMPTest.cpp:14:23: error: expected '#pragma omp' clause before 'printf'
#pragma omp parallel printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
^
../OpenMPTest.cpp:15:1: error: expected primary-expression before '}' token
}
^
make: *** [OpenMPTest.o] Error 1这给我一种(可能是不正确的)印象,认为Eclipse找不到OpenMP库。
因此,在我搞砸任何无法修复的东西之前,我想知道我是否可以获得一个关于如何使用MinGW在Eclipse项目中安装和启用OpenMP的分步指南。
发布于 2015-09-06 17:40:41
不要在#pragma行中放置任何不应该存在的内容。#pragma行是预处理器的指令,您的printf代码不应该在那里。
您的main()应该如下所示
int main()
{
#pragma omp parallel
{
printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
}
return 0;
}https://stackoverflow.com/questions/32416419
复制相似问题