最近想写一些电磁计算的程序,采用面向对象的设计思路来写,但是发现FORTRAN中DLL似乎只能支持方法和参量的交互,无法进行类的导出,于是处于纠结状态中。
我遇到的问题大概如下
在工程DLL1中一个module文件如下:
[Fortran] 纯文本查看 复制代码 !module.f90
module test
real::z=7
type MM
integer::C=5
endtype MM
end module test
编译后生成test.mod文件,正确
然后在主工程文件下的main函数中有如下调用:
[Fortran] 纯文本查看 复制代码 progarm main
use test
type(MM)::SS
SS%C=7
z=6.0
end program
因为在工程依赖项中加载了编译过的test.mod文件,DLL和lib都加载过,因此
SS%C=7 这句是正确的
但是,下一句z=6.0就报错:
错误 1 error LNK2019: 无法解析的外部符号 _TEST_mp_Z,该符号在函数 _MAIN__ 中被引用 Main.obj
错误 2 fatal error LNK1120: 1 个无法解析的外部命令 Debug\TestDLL.exe
所以求助大神们,怎么破,就是如何引入别的文件写好的module中的数据,但是本身源代码.f90不在当前工程文件下。
|