Fortran Coder

标题: gfortran编译dll失败,望指导,谢谢 [打印本页]

作者: x_s_s_1    时间: 2024-5-11 10:10
标题: gfortran编译dll失败,望指导,谢谢
本帖最后由 x_s_s_1 于 2024-5-11 10:13 编辑

初学者,定向学习,抄代码如下
[Fortran] 纯文本查看 复制代码
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
好像找到原因了,-dll 选项是特定于Intel编译器的
先CMD执行gfortran -c fdll.f90
!编译成.o文件
再CMD执行 gfortran -shared -o fdll.dll fdll.o
!编译成dll
作者: fcode    时间: 2024-5-11 10:40
gfortran -shared -o fdll.dll fdll.f90
也可以,同时编译链接就行了。

即便你加了 -dll ,gfortran不认识,它提示你 warning:unrecognized gcc debugging option,也没关系。dll 还是生成了的。
作者: x_s_s_1    时间: 2024-5-11 10:54
fcode 发表于 2024-5-11 10:40
gfortran -shared -o fdll.dll fdll.f90
也可以,同时编译链接就行了。

谢谢您,我试试,再请教一下,我用
CMD  Regsvr32 /s "E:/fortran/lstlinkfor/fdll.dll"注册了这个dll以后,用其它语言调用的时候要怎么链接?我用的语言很小众,vlisp类似VB,(vlax-get-or-create-object "fdll.dll")不成功
作者: fcode    时间: 2024-5-11 11:15
普通的 dll 不用注册。只有特殊的提供 DllServer 服务(COM,DCOM组件)的DLL才需要注册。
其他语言像常规的dll使用一样就行。没有什么特殊的。

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

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

再次感谢,我再研究一下




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2