0

VTK 6.0.0 をダウンロードして構成し、生成して、Ubuntu 12.04 で作成しました (エラーなし)。VTK_Group_MPIとのフラグもオンにしました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 に答える