我一直试图在我的系统中运行https://github.com/dungtn/mpi-floyd/blob/master/floyd2d.c中的代码。我正在使用CodeBlocks IDE和MS-Mpi。当我尝试编译代码时,它表示对MPI_file_seek @ 12的未定义引用。这是否意味着MS mpi不支持此功能或为什么会发生这种情况?
答案 0 :(得分:3)
如果您尝试将32位代码与64位库链接,通常会发生这种情况。未解析的符号名称中包含@12
的事实意味着编译器期望MPI_File_seek
是 stdcall 函数。 stdcall 主要用于DLL函数,仅用于x86(x64使用与 fastcall 类似的不同调用约定)。如果要链接到MS-MPI的64位导入库,则无法在库中找到装饰符号,并且会发生此类错误。
仔细检查您拥有的MS-MPI版本以及项目设置,并确保两者具有相同的"位度"。
答案 1 :(得分:1)
将Code :: Blocks中的项目设置更改为C项目(而不是C ++项目,您当前拥有的项目)。创建一个全新的C项目并在那里导入文件可能更容易。仔细检查Code :: Blocks是否正在运行gcc
而不是g++
来编译代码(floyd2d.c
)。
如果它仍然不起作用,请发布Code :: Blocks的完整编译器和链接器输出,包括命令运行及其输出消息。