4

我使用 OpenMP 和 gcc 来编写并行代码。我现在使用 Visual C++ 2005 并试图弄清楚如何使用 OpenMP。Properties->C/C++/Language 菜单中有一个编译器选项,但它抱怨缺少库。是否有 OpenMP 的第 3 方实现,或者我只是错误地配置了 Visual C++?

4

3 回答 3

7

经过一些研究,我发现 OpenMP 库和 dll 不包含在 Visual C++ 2005 或 Visual C++ Express Edition 2008 中。但是通过一些变通方法,您可以使其正常工作。

首先,您需要从 microsoft 下载 lib 文件,这些文件可以在 Windows SDK for Windows Server 2008 和 .NET framework 3.5中找到。下载后,您需要确保 vcomp.lib 或 vcompd.lib 已链接到您的程序。

接下来,您需要拥有可以在Visual C++ Redistributable Packkage中找到的 dll 。然后确保 vcomp90.dll 在您的路径中的某个位置。

您还需要启用 OpenMP 编译器选项,该选项可在 Visual C++ 的 Properties->C/C++/Language 菜单中找到。

之后,您应该可以正常使用 OpenMP。

于 2009-05-16T17:52:03.407 回答
6

我认为 VC 2005 开箱即用,但我不确定它们是否随所有版本一起提供。

如果你只是附上

/openmp

选项您还必须包含打开的 mp 标头

#include <omp.h>

这很重要,因为此标头会将清单添加到您的应用程序中,从而使其能够从正确的系统路径加载 vcomp.dll。因此,通常不再允许在可执行文件下复制 vcomp.dll 或其他系统 dll,但您必须拉动应用程序的清单以从正确的位置加载 dll。omp.h 标头不会自动执行此操作。

因此,如果您不想自己修改清单,最少的代码是:

#include <omp.h> // has to include this header to build the correct manifest to find vcom.dll or vcompd.dll

int main(int argc, char* argv[])
{
  double sum;
#pragma omp parallel for
  for(int i = 0; i < 10000; ++i) {

  }
    return 0;
}
于 2009-06-15T14:10:17.053 回答
1

您需要添加:

/openmp

到您的编译器选项。

更多信息可在MSDN上找到

于 2009-05-14T20:52:39.387 回答