【问题标题】:Code::Blocks and MPI代码::块和 MPI
【发布时间】:2014-10-17 21:59:47
【问题描述】:

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

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

我的编译器总是(因为线程)有 -std=c++0x 选项! 我还将 MPICH2 的 bin 目录添加到我的路径中。我的操作系统是win 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;
}

我该如何解决?

【问题讨论】:

  • 确保 MPICH2 和您的项目具有相同的“位数”,即两者都是 32 位或都是 64 位。另外,查看C:\Program Files\MPICH2\lib 目录并确保没有调用该库,例如mpich.lib.

标签: c++ c mpi codeblocks


【解决方案1】:

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

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

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

您应该查阅 Code:Blocks 文档以添加编译器。具体来说, http://svn.code.sf.net/p/codeblocks/code/trunk/COMPILERS 给出这个建议:

如果您将编译器安装在默认目录以外的目录中, 启动代码::块。如果是第一次启动, 编译器将被自动检测。如果没有,请转到“设置/配置 plugins/Compiler”,选择你安装的编译器,切换到 “程序”选项卡,然后按“自动检测”。如果你收到一条消息说 编译器被自动检测到了,恭喜!如果没有,那么 按下“自动检测”按钮旁边带有三个点的按钮 并手动选择编译器的安装目录。

【讨论】:

    猜你喜欢
    • 2012-01-24
    • 2017-07-18
    • 1970-01-01
    • 2014-08-16
    • 2011-01-16
    • 2021-08-16
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多