MPICH2はC:\ Program Files \ MPICH2にインストールされています。 2つのサブディレクトリ(関心事)があり、.hファイルを含む\include
と.libファイルを含む\lib
があります。MinGWリンカーはMPICH2ライブラリを見つけることができません
MPICH2が付属してREADMEには、以下の手順があります。
- メイク
- を作成
–I...mpich2\include
- を追加
–L...mpich2\lib
- を追加するには、ソースファイルのルールを追加
–lmpi
- を追加
- コンパイル
私のプロジェクトには他のルールが存在しないので、私はメイクファイルを作成しない、私は、コマンドラインに移動し、次のようにコンパイルしてみてください。
g++ -I"C:\Program Files\MPICH2\include" main.cpp -L"C:\Program Files\MPICH2\lib" -lmpi
をこれは私にundefined reference
の握りを与えますコード内のすべての単一MPIシンボル上のエラー。 -I
、-L
と-l
のスイッチを入れ替え、パラメータの順序を入れ替えて、すべての.libファイルを自分のソースと同じディレクトリにコピーしましたが、何も動作しないようです。
この物をリンクさせるには、どのようなブードゥーが必要ですか?
編集:私は、私は、問題を見つけたと思う:ここでは、リンカの出力の抜粋は(コンパイルコマンドに-Wl,--verbose
を追加する)冗長モードでは:
attempt to open C:\Program Files\MPICH2\lib/libmingwex.dll.a failed
attempt to open C:\Program Files\MPICH2\lib/mingwex.dll.a failed
attempt to open C:\Program Files\MPICH2\lib/libmingwex.a failed
attempt to open C:\Program Files\MPICH2\lib/mingwex.lib failed
attempt to open C:\Program Files\MPICH2\lib/libmingwex.dll failed
attempt to open C:\Program Files\MPICH2\lib/mingwex.dll failed
attempt to open C:\Program Files\MPICH2\lib\libmingwex.a failed
どうやら、リンカは代わりに/
を追加ディレクトリ名に\
を添付します(何らかの理由でlib___.a
形式を検索する場合を除いて)。これは明らかに有効なパスではありません。リンカーにスラッシュの代わりにバックスラッシュを使用するよう指示する方法はありますか?
また、これは私の目を引いた。
g++ -I"/Program Files/MPICH2/include" -L"/Program Files/MPICH2/lib" objManager.cpp ongom.cpp io.cpp main.cpp -lmpi -lcxx
しかし、私はまだ同じundefined reference
エラーを取得:
attempt to open /mingw/lib/libmingwex.a succeeded
は、だから私はこのようにコンパイルしてみました。
コンパイラ/リンカーログを投稿してもいいですか? –
これは数多くの行があります: 'C:\ Users \ Bansaghi \ AppData \ Local \ Temp/ccIF61Uc.o:main.cpp :(。text + 0x1615):未定義の 'MPI_Comm_rank ' – suszterpatt