Compiler errors 将用户级功能添加到MPICH3.3*

Compiler errors 将用户级功能添加到MPICH3.3*,compiler-errors,compilation,mpi,mpich,Compiler Errors,Compilation,Mpi,Mpich,我需要添加一个用户级函数,MPI\u Myfunc(),以MPICH-3.3.2。我将函数原型添加到其他原型所在的src/include/mpi.h.in(mpi_Send,…),并在src/mpi/coll/allgather/allgather.c中实现它。我可以毫无问题地编译和构建MPICH。但是,当我想编译一个调用MPI\u Myfunc()的测试程序时,我会遇到以下错误: 对MPI\u Myfunc的未定义引用 当我遵循MPICH-3.2.1中的相同过程时,我没有收到此错误。我想知道在

我需要添加一个用户级函数,
MPI\u Myfunc()
,以MPICH-3.3.2。我将函数原型添加到其他原型所在的src/include/mpi.h.in(mpi_Send,…),并在src/mpi/coll/allgather/allgather.c中实现它。我可以毫无问题地编译和构建MPICH。但是,当我想编译一个调用
MPI\u Myfunc()
的测试程序时,我会遇到以下错误:

对MPI\u Myfunc的未定义引用

当我遵循
MPICH-3.2.1
中的相同过程时,我没有收到此错误。我想知道在
MPICH-3.3.2
中是否有我不知道的变化


如何修复此错误?

我可以通过在/src/invlude/mpi.h.in的函数原型中添加以下内容来修复此问题:

MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_API_PUBLIC;
因此,函数原型如下所示:

void MPI_Myfunc() MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_API_PUBLIC;

我可以通过在/src/invlude/mpi.h.in的函数原型中添加以下内容来解决此问题:

MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_API_PUBLIC;
因此,函数原型如下所示:

void MPI_Myfunc() MPICH_ATTR_POINTER_WITH_TYPE_TAG(1,3) MPICH_API_PUBLIC;