Fortran Coder

查看: 11038|回复: 5
打印 上一主题 下一主题

[数学库] 如何生成第三方需要的lib文件

[复制链接]

27

帖子

7

主题

0

精华

熟手

F 币
124 元
贡献
66 点
跳转到指定楼层
楼主
发表于 2016-8-5 11:36:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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, 下载次数: 329)

QQ截图20160805113200.png
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

718

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
632 元
贡献
323 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2016-8-5 16:47:59 | 只看该作者
建议不要用VS编译,而采用命令行编译。

27

帖子

7

主题

0

精华

熟手

F 币
124 元
贡献
66 点
板凳
 楼主| 发表于 2016-8-5 17:25:49 | 只看该作者
本帖最后由 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”缺少引用模块的调试信息;正在链接对象,如同没有调试信息一样

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

718

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
632 元
贡献
323 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

地板
发表于 2016-8-5 17:59:35 | 只看该作者
我不清楚你用的什么软件使用 sub2.lib 文件。但是没有调试信息又怎么样?难道你还需要调试 sub2.lib ?

27

帖子

7

主题

0

精华

熟手

F 币
124 元
贡献
66 点
5#
 楼主| 发表于 2016-8-5 18:01:56 | 只看该作者
好的,我是最近学的fortran,很多常识都是看的网站上的资料。没问题就好,谢谢!

39

帖子

4

主题

0

精华

熟手

F 币
236 元
贡献
93 点
6#
发表于 2016-8-31 16:47:49 | 只看该作者
命令行直接编译 才是主流方式,也是最可控的。

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

另外,针对不同语言的主程序调用(如主程序由fortran,Python,C等写的),库及主程序的写法都需要轻微调整。 不同系列的编译器,混编部分的语法也稍有不同。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-15 06:48

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表