2013-07-18 132 views
0

我下载了VTK 6.0.0,配置了它,生成了它,并在我的Ubuntu 12.04中完成了(没有错误)。我还打开了VTK_Group_MPI和Module_vtkmrmpi的标志。我试图使用命令行编译一个VTK/MPI Hello World程序编译MPI/VTK Hello World

sudo mpiC++ -I $ HOME/Downloads/VTK6.0.0Attempt2/Parallel/MPI mpi_vtk_Hello_World.cpp -I $ HOME/Downloads/VTK6.0.0 ATTEMPT2 /并口/核心-I $ HOME /下载/ VTK6.0.0Attempt2 /通用/核心-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(vtkMultiProcess控制器*,无效*):错误:未定义对'vtkMultiProcessController :: GetLocalProcessId()'的引用'

以及2个未定义引用的其他类似错误。

我不完全确定为什么会出现这些错误。我想这可能是因为CMAKE_INSTALL_PREFIX参数,但它正确。我也在想我可能使用了错误的标志,使MPI,如建议通过http://web.archiveorange.com/archive/v/50zHj1hYwwTAT06EeG4o

其他注意事项: 我用VTK 5.8.0,而不是还试图跟着在http://wwwx.cs.unc.edu/Research/bass/index.php/VTK的说明。不幸的是,在运行sudo mpicC++命令后,我得到了未定义引用的相同错误。

+0

您应该将VTK库链接到您的程序,例如通过像'-lvtk'这样的编译命令提供正确的链接选项。 –

+0

我试着做**须藤MPIC++ -I $ HOME /下载/ VTK /并行-lvtk mpi_vtk_Hello_World.cpp -I $ HOME /下载/ VTK -I $ HOME /下载/ VTK /通用-o mpi_vtk_Hello_World ** 但我遇到错误 **/usr/bin/ld:错误:无法找到-lvtk **。我似乎没有一个libvtk.so,但我确实有一堆其他的libvtk * .so – ThinkFlow

+0

没关系,我尝试使用'-lvtkParallel',它似乎工作。我如何知道这些命令行链接选项? – ThinkFlow

回答

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