0

我下载了 VTK 6.0.0,配置它,生成它,并在我的 Ubuntu 12.04 中制作它(没有错误)。VTK_Group_MPI我还为and开启了标志Module_vtkmrmpi。我正在尝试使用命令行编译 VTK/MPI Hello World 程序

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,如此处所建议

附加说明: 我也尝试使用 VTK 5.8.0 并按照这些说明进行操作。sudo mpicc++不幸的是,运行该命令后,我得到了相同的未定义引用错误。

4

1 回答 1

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 代码。

于 2013-07-26T15:30:24.440 回答