Fortran Coder

标题: 如何生成第三方需要的lib文件 [打印本页]

作者: sunkingf    时间: 2016-8-5 11:36
标题: 如何生成第三方需要的lib文件
本帖最后由 sunkingf 于 2016-8-5 11:36 编辑

各位好:

打算编译一个第三方软件需要的lib文件; 这个软件的编译环境设置如下:

compile_fortran=['ifort',
                 '/c','/DABQ_WIN86_64', '/extend-source', '/fpp',
                 '/iface:cref', '/recursive', '/Qauto-scalar',
                 '/QxSSE3', '/QaxAVX',
                # '/free',
                 '/heap-arrays:1',
                  '/Od', '/Ob0',  # <-- Optimization Debugging
                  '/Zi',          # <-- Debugging
                 '/include:%I']


打算在IVF2013+VS的工程属性页更改command line, 使得二者一致,便于生成上面软件需要的lib文件。但是VS里原来有一些option, 没法删去,我只能在additional option 中加上上面的设置,如图:
但是这样设置生成的lib文件是第三方软件需要的吗? 后来显示:LINK : fatal error LNK1104: 无法打开文件“tbin.lib”。那哪里做错了吗? 请高手指点!谢谢!



QQ截图20160805113200.png (60.38 KB, 下载次数: 336)

QQ截图20160805113200.png

作者: 楚香饭    时间: 2016-8-5 16:47
建议不要用VS编译,而采用命令行编译。
作者: sunkingf    时间: 2016-8-5 17:25
本帖最后由 sunkingf 于 2016-8-5 17:50 编辑
楚香饭 发表于 2016-8-5 16:47
建议不要用VS编译,而采用命令行编译。

我从没用过命令行,试了下面的:

D:\Program Files (x86)\Intel\Composer XE 2013 SP1\Jiangbin>ifort sub2.f90 /c /DA
BQ_WIN86_64 /extend-source /fpp /iface:cref /recursive /Qauto-scalar /QxSSE3 /Qa
xAVX /heap-arrays:1 /Od /Ob0 /Zi /include:%I

可以将sub2.f90生成sub2.obj;后面又用了 lib sub2.obj /out:sub2.lib

得到了sub2.lib。 然后在软件中运行,通过了,只是出现很多条下面的警告:
warning LNK4204: “C:\Users\mac\AppData\Local\Temp\mac_elasticity_12212\vc100.pdb”缺少引用模块的调试信息;正在链接对象,如同没有调试信息一样

不知道是否有可以改进的地方。。。。


作者: 楚香饭    时间: 2016-8-5 17:59
我不清楚你用的什么软件使用 sub2.lib 文件。但是没有调试信息又怎么样?难道你还需要调试 sub2.lib ?
作者: sunkingf    时间: 2016-8-5 18:01
好的,我是最近学的fortran,很多常识都是看的网站上的资料。没问题就好,谢谢!
作者: gps99    时间: 2016-8-31 16:47
命令行直接编译 才是主流方式,也是最可控的。

编译成动态库Dll,对于GFortran的编译器,命令行:gfortran.exe -shared *****

另外,针对不同语言的主程序调用(如主程序由fortran,Python,C等写的),库及主程序的写法都需要轻微调整。 不同系列的编译器,混编部分的语法也稍有不同。





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