1,boost编译。
我通过查看网上的很多教程,终于把自己的boost mpi给编译成功了。我有两个win环境,一个是:编译器VS2012,mpi为openmpi1.6,boost库为1.53;另一个环境是:编译器vs2008,mpi为openmpi1.6.2,boost库为1.42.上述的两个环境编译的boost和mpi均成功了,成功生成了libboost_mpi-vc110-mt-1_53.lib,libboost_mpi-vc110-mt-gd-1_53.lib(第一个环境的热release,debug)。
2,使用boost mpi。
我拷贝了网上的一个boost mpi 的 hello world程序,工程配置都包含了相应的头文件和lib库, 例子如下:
#include <boost\mpi.hpp>
#include <iostream>
int main(int argc, char* argv[])
{
boost::mpi::environment env(argc, argv);
boost::mpi::communicator world;
std::cout<<argc<<std::endl;
std::cout<<argv[0]<<std::endl;
std::cout<<"hello world! from process"<<world.rank()<<std::endl;
return 0;
}
编译后出现链接错误,如下:
1>------ 已启动生成: 项目: testBoost1, 配置: Release Win32 ------
1>libboost_mpi-vc110-mt-1_53.lib(communicator.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_comm_world
1>libboost_mpi-vc110-mt-1_53.lib(environment.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_comm_world
1>libboost_mpi-vc110-mt-1_53.lib(communicator.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_comm_null
1>libboost_mpi-vc110-mt-1_53.lib(communicator.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_group_empty
1>libboost_mpi-vc110-mt-1_53.lib(group.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_group_empty
1>libboost_mpi-vc110-mt-1_53.lib(communicator.obj) : error LNK2001: 无法解析的外部符号 _ompi_request_null
1>libboost_mpi-vc110-mt-1_53.lib(request.obj) : error LNK2001: 无法解析的外部符号 _ompi_request_null
1>libboost_mpi-vc110-mt-1_53.lib(communicator.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_unsigned
1>libboost_mpi-vc110-mt-1_53.lib(point_to_point.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_unsigned
1>libboost_mpi-vc110-mt-1_53.lib(communicator.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_packed
1>libboost_mpi-vc110-mt-1_53.lib(point_to_point.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_packed
1>libboost_mpi-vc110-mt-1_53.lib(communicator.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_errors_return
1>libboost_mpi-vc110-mt-1_53.lib(environment.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_errors_return
1>libboost_mpi-vc110-mt-1_53.lib(communicator.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_info_null
1>libboost_mpi-vc110-mt-1_53.lib(point_to_point.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_info_null
1>libboost_mpi-vc110-mt-1_53.lib(mpi_datatype_cache.obj) : error LNK2001: 无法解析的外部符号 _ompi_mpi_datatype_null
1>E:\Workspace\C++\testBoost1\Release\testBoost1.exe : fatal error LNK1120: 9 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
问题:
我猜测这个无法解析的原因可能是我编译的lib有问题,但在编译boost及mpi时并未报错都成功了,所以我想问问大神和高人,小菜我的问题原因及解决办法如何?
跪请指点!!!
老哥,能问一下你是怎么包含boost和mpi库的吗? 我用的mpich还是会出现上述的错误,请问怎么解决? 谢谢了。
自己回答:我没能解决这个问题,但是我换了一种方式,不用openMPI了,改用了MPICH2就好了。如果有答复请联系nohackcc@gmail.com 能把你的编译脚本分享一下吗?我用VS2012
bjam怎么指定MPI路径?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。