我下载了VTK 6.0.0,对其进行了配置,生成并在我的Ubuntu 12.04中创建(没有错误)。我还打开了VTK_Group_MPI
和Module_vtkmrmpi
的旗帜。我正在尝试使用命令行
sudo mpic++ -I $HOME/Downloads/VTK6.0.0Attempt2/Parallel/MPI mpi_vtk_Hello_World.cpp -I $HOME/Downloads/VTK6.0.0Attempt2/Parallel/Core -I $HOME/Downloads/VTK6.0.0Attempt2/Common/Core -o mpi_vtk_Hello_World
Hello world计划是:
#include "vtkMPIController.h"
void process(vtkMultiProcessController* controller, void* vtkNotUsed(arg))
{
int myId = controller->GetLocalProcessId();
std::cout << "My process id is ";
std::cout << myId << "." << std::endl;
}
int main( int argc, char* argv[] )
{
vtkMPIController* controller = vtkMPIController::New();
controller->Initialize(&argc, &argv);
controller->SetSingleMethod(process, 0);
controller->SingleMethodExecute();
controller->Finalize();
controller->Delete();
return 0;
}
然而,我收到一个错误说:
/tmp/cc6iq2lQ.o:mpi_vtk_Hello_World.cpp:function process(vtkMultiProcessController*, void*): error: undefined reference to 'vtkMultiProcessController::GetLocalProcessId()'
以及其他2个未定义引用的类似错误。
我不完全确定为什么会出现这些错误。我原以为它可能是因为CMAKE_INSTALL_PREFIX参数,但它是正确的。我也在想我可能正在使用错误的标志来启用MPI,如建议here。
附加说明:
我也尝试使用VTK 5.8.0而不是these instructions。不幸的是,在运行sudo mpicc++
命令后,我得到了与未定义引用相同的错误。
答案 0 :(得分:0)
sudo mpic++ -I $HOME/Downloads/VTK/Parallel -lvtkParallel mpi_vtk_Hello_World.cpp -I $HOME/Downloads/VTK -I $HOME/Downloads/VTK/Common -o mpi_vtk_Hello_World
的工作原理。显然需要-lvtkParallel
来帮助编译mpi / VTK代码。