我有两个项目:我的解决方案中的CPart
和FortranPart
。FortranPart
取决于CPart
,后来包含main
功能。这是main.c
#include <stdio.h>
extern int __stdcall FORTRAN_ADD(int *A, int *B);
int main()
{
int a = 3;
int b = 4;
int c = FORTRAN_ADD(&a, &b);
printf("%in", c);
return 0;
}
这是我的fortran模块的代码
module FORTRAN_UTILS
implicit none
contains
integer*4 function fortran_add(a, b) result(c)
implicit none
integer*4, intent(in) :: a, b
c = a + b
end function fortran_add
end module FORTRAN_UTILS
编译了Fortran后,我将获得文件FortranPart.lib
。在CPart
项目依赖项中,我将其添加为外部库。当我尝试编译和运行CPart
时,我会得到以下
Error LNK2019 unresolved external symbol _FORTRAN_ADD@8 referenced in function _main CPart c:Userssashadocumentsvisual studio 2015ProjectsMSCourseMSCoursemain.obj 1
P.S。我需要主要程序在C,而不是C 。
更多的研究带给我这个页面https://software.intel.com/ru-ru/node/678422
我更改了代码,现在正在工作。
subroutine fortran_add(a, b, r) bind(c)
use, intrinsic :: iso_c_binding
implicit none
integer (c_int), value :: a, b
integer (c_int), intent(out) :: r
r = a + b
end subroutine fortran_add
和main.c
#include <stdio.h>
void fortran_add(int a, int b, int *r);
int main()
{
int a = 3;
int b = 4;
int c;
fortran_add(a, b, &c);
printf("%in", c);
scanf_s("");
return 0;
}