Hola shakarc, estoy intentando hacer un programa en c++ que acceda a una rutina en fortran muy sencilla, pasandole una serie de datos y el fortran se encarga de tratar esos datos. Como puedo hacerlo? En c estoy enpezando ahora de forma que explicame simplemente lo basico, que ya me las apañaré despues. Muchisimas gracias por adelantado.
Crea un .exe del programa fortram y llamalo desde C++ con la funcion exe mas apropiada. _exec Function Suffix Description E envp, array of pointers to environment settings, is passed to new process. l Command-line arguments are passed individually to _exec function. Typically used when number of parameters to new process is known in advance. P PATH environment variable is used to find file to execute. V argv, array of pointers to command-line arguments, is passed to _exec. Typically used when number of parameters to new process is variable Ejemplo: /* EXEC. C illustrates the different versions of exec including: * _execl _execle _execlp _execlpe * _execv _execve _execvp _execvpe * * Although EXEC. C can exec any program, you can verify how * different versions handle arguments and environment by * compiling and specifying the sample program ARGS.C. See * SPAWN.C for examples of the similar spawn functions. */ #include <stdio.h> #include <conio.h> #include <process.h> char *my_env[] = /* Environment for exec?e */ { "THIS=environment will be", "PASSED=to new process by", "the EXEC=functions", NULL }; void main() { char *args[4], prog[80]; int ch; printf( "Enter name of program to exec: " ); gets( prog ); printf( " 1. _execl 2. _execle 3. _execlp 4. _execlpe\n" ); printf( " 5. _execv 6. _execve 7. _execvp 8. _execvpe\n" ); printf( "Type a number from 1 to 8 (or 0 to quit): " ); ch = _getche(); if( (ch < '1') || (ch > '8') ) exit( 1 ); printf( "\n\n" ); /* Arguments for _execv? */ args[0] = prog; args[1] = "exec??"; args[2] = "two"; args[3] = NULL; switch( ch ) { case '1': _execl( prog, prog, "_execl", "two", NULL ); break; case '2': _execle( prog, prog, "_execle", "two", NULL, my_env ); break; case '3': _execlp( prog, prog, "_execlp", "two", NULL ); break; case '4': _execlpe( prog, prog, "_execlpe", "two", NULL, my_env ); break; case '5': _execv( prog, args ); break; case '6': _execve( prog, args, my_env ); break; case '7': _execvp( prog, args ); break; case '8': _execvpe( prog, args, my_env ); break; default: break; } /* This point is reached only if exec fails. */ printf( "\nProcess was not execed." ); exit( 0 ); }