OpenMP未定义引用`_CRT_fenv'和`_setargv'

时间:2017-04-16 09:10:34

标签: c++ mingw openmp undefined-reference

我正在尝试运行这个简单的OpenMP示例:

#include <iostream>
#include <omp.h>

using namespace std;

int main()
{
    switch(_OPENMP) {
    case 200805:
        cout << "OpenMP version 3.0 has macro value of 200805" << endl;
        break;
    case 200505:
        cout << "OpenMP version 2.5 has macro value of 200505" << endl;
        break;
    default:
        cout << "Unrecognized OpenMP version of " << _OPENMP << endl;
        break;
    }
    return 0;
}

我收到两个undefined reference to错误:

c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../crt2.o:(.text+0x1ee): undefined reference to `_CRT_fenv'
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../crt2.o:(.text+0x1fb): undefined reference to `_setargv'
collect2.exe: error: ld returned 1 exit status

我已添加libgomp-1.dll将librairies和-fopenmp链接到其他编译器选项(顺便说一下,我正在使用code :: blocks)。

1 个答案:

答案 0 :(得分:1)

我知道这很旧了,但是我遇到了同样的错误,并且在寻找答案的过程中发现了这篇文章,因此我怀疑我可以为其他人解决这个问题。

我怀疑问题出在两个MinGW的安装上。您是否安装了完整的Code :: Blocks发行版,包括MinGw?

错误引用“ c:/ mingw / ...”,我猜您是单独安装了MinGW,从而创建了该树。如果也让Code :: Blocks安装它,则可能会将其放在“ some_path / CodeBlocks / MinGW /”中。

如果是这种情况(对我而言),请在Code :: Blocks中,转到“设置”->“编译器...”,然后在打开的窗口中打开“工具链可执行文件”选项卡,并更改其路径。您的MinGW可执行文件将成为Code :: Blocks创建的安装路径。 enter image description here