我已经将几个子程序放入.f95文件中,用gfortran -shared -fPIC -o bin/Debug/libpr10.so main.f95
编译它,现在我想在我的C程序中使用该库中的一些子程序。我怎么做(语法上)?我是否必须制作任何标题"在Fortran库中,我应该声明我想在库外使用的子程序(如果它是C,我必须这样做)?
如果我只是告诉链接器库在哪里并尝试调用main()
中的任何子例程我会收到错误
更新我不想混合fortran和C!我只想使用Fortran共享库中的一个子例程,甚至是w / o参数。尽管我已经指出了通往.so图书馆的路径,但它已经隐藏了""隐形"对于C程序!问题是如何告诉C程序实际上有一个我想要调用的子程序。
如果我在"混合"想法,纠正我。
答案 0 :(得分:1)
好吧,我不认为这个解决方案是通用的,但是对于Microsoft Visual Studio,它应该在子例程名称之前为__stdcall
,对于gcc,它应该是子例程名称之后的_
符号例如我们想调用名为menu的子程序,所以我们将menu_();
放入main函数。