0

我有两个项目:在我的解决方案中CPart。取决于,后者包含该功能。这是代码FortranPartFortranPartCPartmainmain.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("%i\n", 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:\Users\sasha\documents\visual studio 2015\Projects\MSCourse\MSCourse\main.obj 1   

PS我需要主程序是C,而不是C++。

4

1 回答 1

0

更多的研究给我带来了这个页面 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("%i\n", c);

    scanf_s("");

    return 0;
}
于 2016-12-25T19:07:12.447 回答