![](/img/trans.png)
[英]Calling fortran function of lapack library from CUDA C
[英]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 以期望指针(指向某物的副本)。 要使其期望一个值,请同时使用value
和bind(C)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.