Я пытался скомпилировать пример проекта со смешанным программным языком (C ++ / Fortran), предоставленного Intel Compiler 2013, в разделе Eclipse IDE. Я могу успешно запустить этот проект в Visual Studio IDE (в системе Windows), но я не понял, как запустить тот же проект в Eclipse в Linux. Конфигурация связи Fortran с проектом C ++ в Eclipse IDE — это основная проблема, которая меня беспокоит.
Может кто-нибудь сказать, пожалуйста, как связать эти два проекта? Благодарю. Вывод должен быть простым «Тестирование … 123».
Li
Исходные коды следующие:
(1) основная программа, fmain.f90
PROGRAM fmain
USE, INTRINSIC :: ISO_C_BINDING
IMPLICIT NONE
INTERFACE
SUBROUTINE c_routine (int_arg, str_in, str_out, str_out_len) BIND(C)
IMPORT ! Use declarations from host
INTEGER(C_INT), VALUE,INTENT(IN) :: int_arg
CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(IN) :: str_in
CHARACTER(KIND=C_CHAR), DIMENSION(*), INTENT(OUT) :: str_out
INTEGER(C_INT), VALUE, INTENT(IN) :: str_out_len
END SUBROUTINE c_routine
END INTERFACE
CHARACTER(80) OUTPUT_TEXT
INTEGER IN_ARG, OUTPUT_LEN
CHARACTER(80) INPUT_TEXT
INPUT_TEXT = "Testing..."//C_NULL_CHAR
IN_ARG = 123
CALL c_routine (IN_ARG, INPUT_TEXT, OUTPUT_TEXT, LEN(OUTPUT_TEXT))
OUTPUT_LEN = INDEX(OUTPUT_TEXT," ")
IF (OUTPUT_LEN == 0) OUTPUT_LEN = len(OUTPUT_TEXT)
WRITE (*,*) OUTPUT_TEXT(1:OUTPUT_LEN)
END
(2) csub.cpp
#include <stdio.h>
extern "C" void c_routine (
int int_arg, // integer to convert
char* input_text, // text to prepend to converted integer
char* output_text, // output buffer
int output_text_len // length of output buffer
)
{
sprintf_s(output_text,output_text_len,"%s%i ",input_text,int_arg);
}
Задача ещё не решена.
Других решений пока нет …