主题:求助,如何生成和使用含 MODULE 的 DLL ?
heizaoniangao
[专家分:310] 发布于 2011-07-31 14:59:00
MODULE可以像 Function 和 subroutine一样 生成 DLL吗?
如何生成? 需要使用 !DEC$ ATTRIBUTES DLLEXPORT :: 吗?
生成以后如何使用呢? 例如,在主程序里调用MODULE里的函数时,如何声明?
有没有关于FORTRAN动态链接库的书呢?
回复列表 (共23个回复)
12 楼
cgl_lgs [专家分:21040] 发布于 2011-08-03 21:03:00
不需要当Module函数(子程序)的话,就直接用别名,当全局函数(子程序)。
如果想保留Module,那就把MOD文件也一并分发。
13 楼
pfzlz [专家分:10] 发布于 2011-08-03 21:43:00
[quote]
只把MODULE里的函数或者子程序 加上 编译命令就可以了吗?
我试了下
1 新建DLL项目,把PROGRAM1加进去,生成
2 新建CONSOLE APPLICATION项目把PROGRAM2加进去,然后把第一步生成的LIB和DLL拷贝到PROGRRAM2同目录文件夹里,把LIB添加到这个项目里,调试
调试报错,ERROR IN OPENING THE COMPILED MODULE FILE. CHECK INCLUDE PATHS.
我觉得原因是,如果把MODULE编译到DLL文件里面,然后在PROGRAM里调用DLL里的MODULE时,直接用USE 加MODULE NAME是不行的。不知道有什么可以实现这个目的的。[/quote]
首先,你的program1和program2是不是顺序写反了。
另外,也试了一下,和你一样的错误。
后来发现把编译出来的mod文件拷到console application的文件夹下,然后在工程属性里的additional include directories把该文件夹路径考进去,编译就成功了。
module代码在编译的过程中会生成mod文件,就算是dll是不是也得和lib一样得include这些mod文件?
14 楼
heizaoniangao [专家分:310] 发布于 2011-08-04 00:09:00
嗯,大家奇思广义啊
16 楼
heizaoniangao [专家分:310] 发布于 2011-08-04 00:13:00
嗯,这是个比较的方便的解决方法。在书上看到MODULE生成的是MOD文件,但是不知道如何像DLL文件一样添加到CONSOLE APPLICATION的项目里面。
原来可以通过加ADDITIONAL INCLUDE DIRECTORIES来添加MOD文件了
谢谢
17 楼
dongyuanxun [专家分:7180] 发布于 2011-08-04 18:34:00
MODULE生成的是两个:mod和obj
如果使用dll的话,保证module里只有extern和声明
这样可以在代码里直接用
18 楼
heizaoniangao [专家分:310] 发布于 2011-08-05 05:17:00
就是说,要直接使用MODULE生成的DLL,而不利用MOD的话,MODULE里面CONTAINS的函数和子程序只写
EXTERNAL :: 函数名(或子程序名)
需要调用的函数和子程序写在另外的文件里 和MODULE一起生成DLL就可以使用了吗?
是这么做吗,能不能具体编一小段代码解释一下哈,谢谢拉
19 楼
heizaoniangao [专家分:310] 发布于 2011-08-08 04:05:00
你好,能详细解释一下吗,我不太明白你的意思,谢谢啦
20 楼
mlliuxiaohui [专家分:10] 发布于 2011-08-09 20:20:00
我是这样解决的,供参考
http://bbs.pfan.cn/post-369974.html
我来回复