我用OpenMP和gcc编写并行代码.我现在正在使用Visual C++ 2005,并试图弄清楚如何使用OpenMP.在Properties-> C/C++/Language菜单中有一个编译器选项,但它会抱怨库缺失.是否存在OpenMP的第三方实现,或者我只是错误地配置Visual C++?
经过一些研究后,我发现OpenMP libs和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了.
我认为VC开箱即用,但我不确定它们是否提供了所有版本.
如果你jsut附加
/openmp
选项你还必须包括open mp标题
#include
这很重要,因为此标头会将清单添加到您的应用程序,使其能够从正确的系统路径加载vcomp.dll.因此,通常不再允许在您的可执行文件下复制vcomp.dll或其他系统dll,但是您必须将应用程序的清单设置为从正确的位置加载dll.这不是omp.h头文件自动生成的.
因此,如果您不想自己模拟清单,那么最小代码是:
#include// 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; }