gpt4 book ai didi

c - 尝试从 Visual C 调用 Intel Visual Fortran 函数

转载 作者:行者123 更新时间:2023-11-30 16:52:17 24 4
gpt4 key购买 nike

我有两个项目:CPartFortranPart在我的解决方案中。 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("%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   

附注我需要主程序使用 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("%i\n", c);

scanf_s("");

return 0;
}

关于c - 尝试从 Visual C 调用 Intel Visual Fortran 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41323551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com