我正在尝试编译由英特尔编译器2013在 Eclipse IDE 下提供的混合编程语言(C ++ / Fortran)示例项目。我可以在Visual Studio IDE(在Windows操作系统上)成功运行该项目,但我还没有想出如何在Linux下运行Eclipse下的相同项目。在Eclipse IDE中将Fortran链接到C ++项目的配置是困扰我的主要问题。
有谁能告诉我如何链接这两个项目?谢谢。输出应该很简单“测试...... 123。”
立
源代码如下: (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);
}