OpenMP 未定义对“_CRT_fenv”和“_setargv”的引用

OpenMP undefined reference to `_CRT_fenv' and `_setargv'

提问人:Stoufa 提问时间:4/16/2017 最后编辑:Vladimir F Героям славаStoufa 更新时间:10/31/2023 访问量:2602

问:

我正在尝试运行这个简单的 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

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

C++ mingw openmp 未定义引用

评论

0赞 Gaurav Pathak 4/16/2017
你在使用minGW吗?请在问题中提及您正在使用的平台、操作系统、IDE、编译器,以便人们更容易关注问题,而不是让他们为您猜测。
0赞 Stoufa 4/16/2017
@GauravPathak 是的
0赞 Gaurav Pathak 4/16/2017
好吧,我不熟悉minGW环境。我在 Linux 上编译了您的代码,它编译时没有任何错误并且运行完美。
0赞 too honest for this site 4/16/2017
什么是未定义的引用/未解析的外部符号错误以及如何修复它?
0赞 Gaurav Pathak 4/16/2017
@Stoufa 您是否在Google上搜索过错误?

答:

3赞 Bob 11/11/2019 #1

我知道这是旧的,但我有同样的错误,并在寻找答案时发现了这篇文章,所以我怀疑我可能可以帮助其他人解决这个问题。

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

错误引用“c:/mingw/...”我猜你做了一个单独的 MinGW 安装,它创建了那棵树。如果你让Code::Blocks也安装它,它可能会把它放在“some_path/CodeBlocks/MinGW/”中。

如果是这种情况(就像我一样),在 Code::Blocks 中,转到 Settings->Compiler...在打开的窗口中,打开“工具链可执行文件”选项卡,并将 MinGW 可执行文件的路径更改为 Code::Blocks 创建的安装路径。enter image description here

评论

1赞 Stoufa 2/14/2020
嘿@Bob,感谢您的发帖。嗯,我不记得了,距离我上次使用 Windows 已经有一段时间了,我在大学期间使用它(不是我的选择),我现在是一个自由人,但是,我希望这个线程能帮助面临同样问题的人,再次感谢。🙂
1赞 smmehrab 1/29/2021
“我怀疑问题出在两个MinGW的安装上。” - 这正是我的问题所在。谢谢!
0赞 Kennedy Lam 10/31/2023 #2

正如 Bob 所说,原因是 MinGW 有两个安装版本,在我卸载之前安装的版本后,cFree 可以工作。

评论

0赞 BoP 11/3/2023
请不要添加“谢谢”作为答案。一旦你有足够的声誉,你将能够投票选出你认为有帮助的问题和答案。- 从评论