【发布时间】:2016-12-25 18:28:00
【问题描述】:
我的解决方案中有两个项目: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("%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++。
【问题讨论】:
-
这里有很多很多关于这个问题的问题和答案。你有没有试过读一些?为什么使用
__stdcall FORTRAN_ADD?为什么要 stdcall 呢?为什么要大写字母?你编译32位还是64位?哪个编译器版本?
标签: c visual-studio fortran fortran-iso-c-binding mixed-programming