本帖最后由 安靖 于 2017-9-1 10:10 编辑
[Fortran] 纯文本查看 复制代码 Interface
Subroutine ALLC (pmem,size,message)
!DEC$ Attributes C, Alias : '_allc' :: ALLC
integer pmem [reference]
Integer size [reference]
character(*) message [reference]
end subroutine ALLCend interface
[C] 纯文本查看 复制代码 /* Function allc */
/* This function allcs memory for 'mem' of size 'size' */
/* In case of failure it outputs a message 'message' */
void allc (int **mem , int *size, char message[200])
{
if (*size < 0)
{
printf (" allc - STORAGE ALLOCATION FAILED: %s \n", message);
printf (" Number of words requested: %d\n", *size);
printf (" Length is <= 0\n");
exit (1);
}
*mem = (int *) calloc (((*size)+1) * sizeof (int),1);
if (*mem == 0)
{
printf (" allc - STORAGE ALLOCATION FAILED: %s \n", message);
printf (" Number of words requested: %d\n", *size);
exit (1);
}
}
以上是一段Fortran与C混编,Fortran调用C来分配内存的接口,以及C的实现
问题1:
integer pmem [reference] 中 [reference] 什么意思? 没见过这种用法
问题2:
按照这种接口,32位的情况下没有问题,但是64位的时候会出现链接错误。
error LNK2001: 无法解析的外部符号 _allc
|