В C ++ просто предоставьте функции
Foo foo; // C++ object we want to access
Foo &foo_factory(); // C++ function we want to call
extern "C" void * get_foo() // extern "C" so C can call function
{ return (void *) & foo; } // cast it to an opaque void * so C can use it
extern "C" void * create_foo()
{ return (void *) & foo_factory(); }
и заголовок C
extern void * get_foo();
extern void * create_foo();
Все, что вам нужно, должны быть соответствующие приспособления с отливками в void*
.
Ваш компилятор Fortran может быть совместим с extern "C"
(особенно если он совместим со статическими библиотеками C) или ваш компилятор C ++ может иметь extern "Fortran"
. Смотрите их руководства.
Возможно, вам удастся найти генератор кода, который сделает это за вас. Если вы можете, делать это вручную безопаснее, конечно.