我正在尝试运行这个简单的 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
来链接库,并将 -fopenmp
添加到其他编译器选项(顺便说一下,我正在使用 code::blocks )。
我知道这已经很旧了,但我也遇到了同样的错误,并在寻找答案时发现了这篇文章,所以我怀疑我也许可以帮助其他人解决这个问题。
我怀疑问题在于安装了两次 MinGW。您是否安装了 Code::Blocks 的完整发行版,包括 MinGw?
错误引用“c:/mingw/...”我猜测您单独安装了 MinGW,它创建了该树。如果您也让 Code::Blocks 安装它,它可能会将其放入“some_path/CodeBlocks/MinGW/。”
如果是这种情况(对我来说就是这样),在 Code::Blocks 中,转到“设置”->“编译器...”,然后在打开的窗口中,打开“工具链可执行文件”选项卡并更改 MinGW 的路径可执行文件是由 Code::Blocks 创建的安装路径。
正如Bob所说,原因是MinGW安装了两次。卸载前一个安装的版本后,cFree就可以工作了。