x_s_s_1 发表于 2024-5-11 10:10:49

gfortran编译dll失败,望指导,谢谢

本帖最后由 x_s_s_1 于 2024-5-11 10:13 编辑

初学者,定向学习,抄代码如下
subroutine CFOX_add(real1,real2)
!程序作用是根据传入real1,real2得出和
!参数之间用,隔开
!DEC$ ATTRIBUTES DLLEXPORT ::CFOX_add
!上面的语句是编译功能语句,DLL中可以被外界调用的函数都要写上面的语句,
!声明哪些函数可以被外界访问,不然外界无法访问
implicit none
real::real1,real2,sum1
sum1 = real1+real2
return
end subroutine CFOX_add
!编译成dll gfortran -shared -dll -o fdll.dll fdll.f90
CMD执行 gfortran -shared -dll -o fdll.dll fdll.f90
错误提示
f951.exe:warning:unrecognized gcc debugging option: 1

x_s_s_1 发表于 2024-5-11 10:35:02

好像找到原因了,-dll 选项是特定于Intel编译器的
先CMD执行gfortran -c fdll.f90
!编译成.o文件
再CMD执行 gfortran -shared -o fdll.dll fdll.o
!编译成dll

fcode 发表于 2024-5-11 10:40:48

gfortran -shared -o fdll.dll fdll.f90
也可以,同时编译链接就行了。

即便你加了 -dll ,gfortran不认识,它提示你 warning:unrecognized gcc debugging option,也没关系。dll 还是生成了的。

x_s_s_1 发表于 2024-5-11 10:54:13

fcode 发表于 2024-5-11 10:40
gfortran -shared -o fdll.dll fdll.f90
也可以,同时编译链接就行了。



谢谢您,我试试,再请教一下,我用
CMDRegsvr32 /s "E:/fortran/lstlinkfor/fdll.dll"注册了这个dll以后,用其它语言调用的时候要怎么链接?我用的语言很小众,vlisp类似VB,(vlax-get-or-create-object "fdll.dll")不成功

fcode 发表于 2024-5-11 11:15:19

普通的 dll 不用注册。只有特殊的提供 DllServer 服务(COM,DCOM组件)的DLL才需要注册。
其他语言像常规的dll使用一样就行。没有什么特殊的。

不成功可能是因为依赖的 dll 没有解决。你可以看看 dlllose.w.fcode.cn

x_s_s_1 发表于 2024-5-11 11:16:52

fcode 发表于 2024-5-11 11:15
dll 不用注册。
其他语言像常规的dll使用一样就行。没有什么特殊的。



再次感谢,我再研究一下
页: [1]
查看完整版本: gfortran编译dll失败,望指导,谢谢