Closed. This question is not reproducible or was caused by typos。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

6年前关闭。



Improve this question




我已经将openmp包含在我的项目中。我在编译器标志中有-fopenmp。

g++ -std = c++ 0x -O3 -Wall -c -fmessage-length = 0 -march = core2 -fopenmp -ffast-math -fPIC
#pragma omp parallel for
for (int i = 0; i < rows; i++) {
    MatrixXd frame = frames.row(i);
    output.row(i) = dem(frame);
}
return output;

而且我在编译时有此输出。
hello.cpp:(.text+0x2d88): undefined reference to `omp_get_num_threads'
hello.cpp:(.text+0x2d8f): undefined reference to `omp_get_thread_num'
./hello.o: In function `demodulateMatrix':
hello.cpp:(.text+0x315f): undefined reference to `GOMP_parallel_start'
hello.cpp:(.text+0x316c): undefined reference to `GOMP_parallel_end'

我试图将-fopenmp标志添加到链接器中,并将其输出
g++: error: unrecognized command line option ‘-fopenmp,’
make: *** [libhello.so] Error 1

GCC版本为4.8.2。

最佳答案

您还需要将-fopenmp传递给链接器。看起来您尝试这样做,但是遇到语法错误,该错误导致链接器看到-fopenmp,(末尾有逗号)。检查您的makefile。

(同样,您似乎将hello.cpp而不是hello.o传递给链接器,因此您的代码被编译了两次。)

关于c++ - 无法在C++项目中使用openmp ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23779001/

10-11 16:49