繁体   English   中英

错误 Intel Fortran 调用 C 共享库 function 接收到 Z157DB7DF530023575518D3E66E

[英]Error Intel Fortran calling C shared library function that receives an integer

我正在尝试从 Linux 共享库 (.so) 中运行 C function C 中的 function 从 Z843E353F7A13A6842B926BF2 程序接收 integer 编号。 使用英特尔编译器(2021.3.0)时,我在 C 中没有得到错误的值,但 gfortran 可以正常工作。 似乎有一个我无法识别的类型错误。 我正在按照此处建立的互操作性语法创建一个抽象接口

C 中的 Function:

int print_number(int n)
{
    printf("Hello world! %d\n", n);
    return 0;
}​

Fortran 中的 Function

! Interface with shared library
abstract interface
    !% -------------------------------------------------------------------------------
    !% Simulation
    !% -------------------------------------------------------------------------------
    integer function print_number(number)
        use, intrinsic :: iso_c_binding
        implicit none
        integer(c_int), value :: number
    end function print_number
end interface

调用 print_number(2) 时的 output:

你好世界! 734920112

我附上文件以在此处重现错误。 首先,执行./compile.sh ,然后./run_test

如果有人能指出我做错了什么,我将不胜感激。

谢谢!

您不应该为此使用抽象接口,但问题可能来自未使用bind(C)

没有bind(C)英特尔 Fortran 编译 function 以期望指针(指向某物的副本)。 要使其期望一个值,请同时使用valuebind(C)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM