Code :: Blocks和MPI

时间:2014-10-16 20:30:24

标签: c++ c mpi codeblocks

我安装了Code :: Blocks和MPICH2并配置了我的Code :: Blocks,如下所示:

  • 搜索目录(编译器):C:\ Program Files \ MPICH2 \ include
  • 搜索目录(链接器):C:\ Program Files \ MPICH2 \ lib
  • 链接器设置:mpi.lib

我的编译器总是(因为线程)有-std = c ++ 0x选项! 我也将MPICH2的bin目录添加到我的路径中。我的操作系统赢了7 x64。 但是当我尝试编译一个简单的hello world程序时,我得到了这个错误:

C:\Users\1111\Desktop\CPP Project\MPI\First_MPI\main.cpp|9|undefined reference to `MPI_Init'|

C:\Users\1111\Desktop\CPP Project\MPI\First_MPI\main.cpp|10|undefined reference to `MPI_Comm_rank'|

C:\Users\1111\Desktop\CPP Project\MPI\First_MPI\main.cpp|11|undefined reference to `MPI_Comm_size'|

C:\Users\1111\Desktop\CPP Project\MPI\First_MPI\main.cpp|13|undefined reference to `MPI_Finalize'| 

||=== Build failed: 4 error(s), 36 warning(s) (0 minute(s), 1 second(s)) ===|
and finally this is my code!

我的代码也是:

 #include <iostream>
 #include "mpi.h"
 #include <string>
 using namespace std;
 int main(int argc, char *argv[])
 {
    int my_rank;
    int my_size;
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
    MPI_Comm_size(MPI_COMM_WORLD, &my_size);
    cout<< "I'm rank (processor number) " << my_rank << " of " <<  my_size << "processor";
    MPI_Finalize();
    return 0;
}

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您看到的错误来自您的编译器无法找到libmpich。

你有C:\ Program Files \ MPICH2 \ bin \ mpicc吗?您应该使用它来构建您的程序。

如果您没有mpicc包装器,则需要将mpich库添加到link命令中。

您应参阅Code:Blocks文档以添加编译器。特别, http://svn.code.sf.net/p/codeblocks/code/trunk/COMPILERS提供了以下建议:

  

如果您将编译器安装在默认目录以外的目录中,   启动Code :: Blocks。如果是第一次启动它,那么   编译器将被自动检测。如果没有,请转到&#34;设置/配置   插件/编译器&#34;,选择你安装的编译器,切换到   &#34;程序&#34;选项卡并按&#34;自动检测&#34;。如果你收到消息说   编译器是自动检测到的,恭喜!如果没有,那么   按下&#34;自动检测&#34;旁边的三个点按钮。按键   并手动选择编译器的安装目录。