Llamar a una función C desde Fortran donde el nombre de la función C se pasó originalmente desde C

Por razones que no son relevantes, debo pasar un nombre de función C / C ++ a una subrutina Fortran, que, a su vez, llama a esa función C. Lo que he encontrado es que puedo pasar con éxito el nombre de la función a la subrutina Fortran. En esa subrutina puedo llamar a la función C correcta. Sin embargo, los argumentos de la función C se rompen en esta llamada (cuando se llama directamente desde C, funciona bien). he utilizadoEncuadernación ISO C para tratar de hacer que esto funcione, en vano.

Aquí hay un MWE:

fortranRoutine.h:
extern "C" {
    void fortranRoutine_(void(int status));
};
llamado desde Fortran.h:
void calledfromFortran(int status);
main.cpp:
#include "fortranRoutine.h"
#include "calledfromFortran.h" 

using namespace std;

int main(int argc, char** argv) {
    calledfromFortran(12);
    fortranRoutine_(calledfromFortran);
    return 0;
}
fortranRoutine.f90:
subroutine fortranRoutine(calledfromFortran)

    use iso_c_binding

    implicit none

    interface
        subroutine calledfromFortran(status) bind (c)
            use iso_c_binding
            integer(kind = c_int), intent(in) :: status
        end subroutine calledfromFortran
    end interface

    integer(kind = c_int) :: one

    one = 2
    call calledfromFortran(one)
    return

end subroutine fortranRoutine
calledfromFortran.cpp:
#include <iostream>
#include "stdlib.h"

using namespace std;

void calledfromFortran(int status) {
    cout << "In calledfromFortran:" << endl;
    cout << " status: " << status << endl;
}
Resultados actuales

Ejecutando esto actualmente da:

In calledfromFortran:
 status: 12
In calledfromFortran:
 status: -1641758848

La primera llamada acalledfromFortran&nbsp;desdemain&nbsp;Funciona correctamente, pero cuando se llama desdefortranRoutine&nbsp;el valor está roto Tenga en cuenta que cada vez que se ejecuta ese último valor cambia. ¿Qué estoy haciendo mal?