无法在 dll 中找到过程入口点 GOMP_parallel

The procedure entry point GOMP_parallel could not be located in the dll

我有一个使用 OpenMP 的 QT 应用程序。 (mingw, win8) 我想在没有 qt creator 的情况下使用 .exe 文件。我已经将所有 dll 放在构建目录中,但是当我 运行 .exe 文件时我仍然收到此消息。

顺便说一下,如果我 运行 来自 Qt creator,一切正常。

这是我的应用程序中唯一的 OpenMP 代码:

#pragma omp parallel for schedule(dynamic, 1)

这就是我在 .pro 文件中启用 OpenMP 的方式

QMAKE_CXXFLAGS+= -fopenmp
QMAKE_LFLAGS +=  -fopenmp

不确定这是否重要,但这段代码在 QThread 中有效。我的意思是我有一个线程用于 GUI,第二个线程用于计算。

知道为什么会这样吗?

upd

是的,我也把 libgomp-1.dll 放在那里。

更新 2

Dependency walker 刚刚显示了几个缺少的 Microsoft dll。不要认为这是问题所在。

好的,问题解决

我从以下位置复制了 dll:

\Qt\Qt5.5.1.5\mingw492_32\bin\

而不是:

\Qt\Qt5.5.1\Tools\mingw492_32\bin\

也许有人会觉得有用。

是的,Dependency walker 在这种情况下无济于事。那个 OpenMP dll 并没有丢失它只是不是我需要的那个。