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". それらのマニュアルを参照してください。
これを行うためのコード ジェネレーターを見つけることができる場合があります。可能であれば、もちろん手動で行う方が安全です。