0

我试图在Eclipse IDE下编译 Intel Compiler 2013 提供的混合编程语言 (C++/Fortran) 示例项目。我可以在 Visual Studio IDE(在 Windows OS 系统上)下成功运行这个项目,但我还没有弄清楚如何在 Linux 上的 Eclipse 下运行相同的项目。在 Eclipse IDE 中将 Fortran 链接到 C++ 项目的配置是困扰我的主要问题。

谁能告诉我如何链接这两个项目?谢谢。输出应该是简单的“Testing...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);
}
4

0 回答 0