在一些帮助下,我成功地从 Windows 上的命令行编译和运行 MPI 程序。现在我试图用我的 IDE code::blocks 编译这个程序,但它失败了。
Under Settings -> Compiler... -> Other Settings -> Advanced Options -> Command line macros
我删除了所有不必要的标志并简单地离开了:
$compiler $file
Settings -> Compiler... -> Toolchain executables
我只是有mpicc.exe
C prgrams 和mpic++.exe
C++ 的 MPI 包装器。
当我现在单击Build
(Ctrl +F9) 时,会打开一个小弹出窗口,说明:
cl.exe - application error
错误代码是0xc00000be
在 code::blocks 的构建日志窗口中,我得到:
mpicc.exe C:\Entwicklung\src\mpi_prime.c Skipping linking (no linker program set): C:\Entwicklung\src\mpi_prime.exe Process terminated with status -1073741634 (1 minutes, 37 seconds) 0 errors, 0 warnings (1 minutes, 37 seconds)
在这里我又被困住了,还有几个问题?
- 我应该保留 mpicc.exe 包装器吗?
- code::blocks 总是尝试调用链接器等。我在哪里可以关闭它?
- 我想从一开始就将我的编译器从 cl 更改为 gcc,我应该先尝试吗?
编辑1:
mpicc.exe /nologo /W3 /MD /Ox /DNDEBUG /IC:\Entwicklung\CUDA\VS2012~1\VC\include /IC:\Entwicklung\CUDA\VS2012~1\VC\include /c main.c /Foobj\Release\main.obj link.exe /nologo /LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\include /LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\include /out:bin\Release\mpi_test_projektarbeit.exe "..\..\..\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib" msvcrt.lib msvcprt.lib "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib" obj\Release\main.obj Process terminated with status -1073741634 (0 minutes, 1 seconds) 0 errors, 0 warnings (0 minutes, 1 seconds)
我相信我确实按照应有的方式设置了所有内容,但是我仍然收到带有错误代码的弹出窗口。我会摆弄它。如果没有任何效果,我会尝试重新安装 code::blocks 也许这会有所帮助。
编辑2:
首先,它仍然没有运行。其次,我相信我现在对发生的事情和出了什么问题有了更好的了解。
通过尝试不同的东西,我尝试在没有 mpicc.exe 包装器的情况下直接使用 cl.exe。我选择了Settings -> Compiler... -> Microsoft Visual C++ 2010
,codeblocks 提供给我。尝试构建项目时,我收到了与mpicc.exe
. mpicc.exe 在其mpicc-wrapper-data.txt
宣言中调用 cl.exe。
因此,借助一些谷歌魔法,我在代码块论坛上找到了这个页面,其他人也有完全相同的错误消息。他们的建议是添加额外的环境路径,这让我思考。在我mpicc
从命令行运行之前,我必须先运行vcvarsall.bat
,因为我得到了一个mspdb110.dll
丢失的错误。所以我仔细看看vcvarsall.bat
哪个在调用另一个批处理文件vcvars32.bat
。该文件临时添加了 PATH 变量。所以我加了
C:\Entwicklung\CUDA\VS 2012\Common7\IDE\
永久保存到我的 PATH 中,并且mpicc.exe
可以在没有任何丢失 DLL 错误消息的情况下调用,但尝试编译时会显示一些链接器错误无法找到advapi32.lib
. 我会更深入地研究它,一旦它在命令行上运行而没有帮助,vcvars32.bat
我会再次从 CB 尝试它。我希望这会导致我所有的问题。
还有一件事让我有点困惑,没什么大不了的,但是当我卸载 CB 并再次安装它时,CB 可能在
"new" mpi
某个地方保存了编译器设置。我检查了我的安装文件夹:卸载后所有文件都被删除了,所以我也删除了.下的CB文件夹USER\AppData\
。但是重新安装 CB,编译器设置在 CB 启动时仍然存在,问我是否要导入它们?!?