回 帖 发 新 帖 刷新版面

主题:求助,如何生成和使用含 MODULE 的 DLL ?

MODULE可以像 Function 和 subroutine一样 生成 DLL吗?

如何生成? 需要使用 !DEC$ ATTRIBUTES DLLEXPORT :: 吗?
生成以后如何使用呢? 例如,在主程序里调用MODULE里的函数时,如何声明?

有没有关于FORTRAN动态链接库的书呢?

回复列表 (共23个回复)

11 楼

Thanks

12 楼

不需要当Module函数(子程序)的话,就直接用别名,当全局函数(子程序)。
如果想保留Module,那就把MOD文件也一并分发。

13 楼

[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 楼

嗯,大家奇思广义啊

15 楼


嗯,大家奇思广义啊

16 楼


嗯,这是个比较的方便的解决方法。在书上看到MODULE生成的是MOD文件,但是不知道如何像DLL文件一样添加到CONSOLE APPLICATION的项目里面。

原来可以通过加ADDITIONAL INCLUDE DIRECTORIES来添加MOD文件了

谢谢

17 楼

MODULE生成的是两个:mod和obj
如果使用dll的话,保证module里只有extern和声明

这样可以在代码里直接用

18 楼


就是说,要直接使用MODULE生成的DLL,而不利用MOD的话,MODULE里面CONTAINS的函数和子程序只写
EXTERNAL :: 函数名(或子程序名)

需要调用的函数和子程序写在另外的文件里 和MODULE一起生成DLL就可以使用了吗?

是这么做吗,能不能具体编一小段代码解释一下哈,谢谢拉

19 楼


你好,能详细解释一下吗,我不太明白你的意思,谢谢啦

20 楼

我是这样解决的,供参考
http://bbs.pfan.cn/post-369974.html

我来回复

您尚未登录,请登录后再回复。点此登录或注册