Visual Studio 2015 年未定义 MPI

MPI undefined in Visual Studio 2015

我试图在 this tutorial. I have installed MS-MPI and all my system variables are set correctly, see:

之后安装 运行 MS-MPI

我已经在VS中设置了所有链接

将这些链接到项目后,我希望 MPI 能够正常工作。在 IDE 中没有显示语法错误,可以识别 MPI 函数,如下图所示。但是,使用 MPI 函数编译 C++ 源文件会产生 Undeclared identifiers 错误。我做错了什么?

如果重要的话,这是我的代码

    /*
    * Transmit a message in a 3-process system.
    */
    #include <mpi.h>
    #include "stdafx.h"
    #include <stdio.h>
    #include <stdlib.h>

    #define BUFSIZE 10
    int main(int argc, char *argv[])
    { int size, rank;
    int slave;
    int buf[BUFSIZE];
    int n, value;
    float rval;
    MPI_Status status;
    /* Initialize MPI  */
    MPI_Init(&argc, &argv);
    /*
    * Determine size in the world group.
    */
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    if (size == 3) {/* Correct number of processes *}
                    /*
                    * Determine my rank in the world group.
                    * The master will be rank 0 and the slaves, rank 1...size-1
                    */

        MPI_Comm_rank(MPI_COMM_WORLD, &rank);

        if (rank == 0) { /* Master */
            buf[0] = 5; buf[1] = 1; buf[2] = 8; buf[3] = 7; buf[4] = 6;
            buf[5] = 5; buf[6] = 4; buf[7] = 2; buf[8] = 3; buf[9] = 1;
            printf("\n Sending the values {5,1,8,7,6,5,4,2,3,1}");
            printf("\n -----------------------------");
            for (slave = 1; slave < size; slave++) {
                printf("\n from master %d to slave %d", rank, slave);
                MPI_Send(buf, 10, MPI_INT, slave, 1, MPI_COMM_WORLD);
            }
            printf("\n\n Receiving the results from slaves");
            printf("\n ---------------------------------");
            MPI_Recv(&value, 1, MPI_INT, 1, 11, MPI_COMM_WORLD, &status);
            printf("\n Minimum %4d from slave 1", value);
            MPI_Recv(&value, 1, MPI_INT, 2, 21, MPI_COMM_WORLD, &status);
            printf("\n Sum     %4d from slave 2", value);
            MPI_Recv(&value, 1, MPI_INT, 1, 12, MPI_COMM_WORLD, &status);
            printf("\n Maximum %4d from slave 1", value);
            MPI_Recv(&rval, 1, MPI_FLOAT, 2, 22, MPI_COMM_WORLD, &status);
            printf("\n Average %4.2f from slave 2\n", rval);
        }
        else {
            if (rank == 1) { /* minmax slave */
                MPI_Recv(buf, 10, MPI_INT, 0, 1, MPI_COMM_WORLD, &status);
                value = 100;
                for (n = 0; n<BUFSIZE; n++) {
                    if (value>buf[n]) { value = buf[n]; }
                }
                MPI_Send(&value, 1, MPI_INT, 0, 11, MPI_COMM_WORLD);
                value = 0;
                for (n = 0; n<BUFSIZE; n++) {
                    if (value<buf[n]) { value = buf[n]; }
                }
                MPI_Send(&value, 1, MPI_INT, 0, 12, MPI_COMM_WORLD);
            }
            else { /* sumave slave */
                MPI_Recv(buf, 10, MPI_INT, 0, 1, MPI_COMM_WORLD, &status);
                value = 0;
                for (n = 0; n<BUFSIZE; n++) {
                    value = value + buf[n];
                }
                MPI_Send(&value, 1, MPI_INT, 0, 21, MPI_COMM_WORLD);
                rval = (float)value / BUFSIZE;
                MPI_Send(&rval, 1, MPI_FLOAT, 0, 22, MPI_COMM_WORLD);
            }
        }
    }
    MPI_Finalize();
    return(0);
    }

一段时间后我发现了错误在哪里。我的设置一切正常,问题仅在于 .cpp 扩展名。将其更改为 .c 项目有帮助,并且所有工作都按预期进行。

如果我想 运行 它作为 c++,#include stdafx.h 在 mpi

之前发生