sunkingf 发表于 2016-8-5 11:36:50

如何生成第三方需要的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”。那哪里做错了吗? 请高手指点!谢谢!



楚香饭 发表于 2016-8-5 16:47:59

建议不要用VS编译,而采用命令行编译。

sunkingf 发表于 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”缺少引用模块的调试信息;正在链接对象,如同没有调试信息一样

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

楚香饭 发表于 2016-8-5 17:59:35

我不清楚你用的什么软件使用 sub2.lib 文件。但是没有调试信息又怎么样?难道你还需要调试 sub2.lib ?

sunkingf 发表于 2016-8-5 18:01:56

好的,我是最近学的fortran,很多常识都是看的网站上的资料。没问题就好,谢谢!

gps99 发表于 2016-8-31 16:47:49

命令行直接编译 才是主流方式,也是最可控的。

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

另外,针对不同语言的主程序调用(如主程序由fortran,Python,C等写的),库及主程序的写法都需要轻微调整。 不同系列的编译器,混编部分的语法也稍有不同。
页: [1]
查看完整版本: 如何生成第三方需要的lib文件