cgns学习—cgns静态链接库编译(VS2022+OneAPI Fortran)

上一篇中我们介绍了如何生成cgns的动态链接库,这篇我们将介绍一下静态链接库的编译和使用。

我们同样的分为三部分进行介绍:

第一部分 1.安装文件准备

第二部分 2.cgns静态链接库编译

第三部分 3. cgns静态链接库的使用

1. 安装文件准备

与上一篇cgns动态链接库编译所需的软件和代码相同,具体情况参见下面的链接https://blog.csdn.net/LDDHEU/article/details/133563784?spm=1001.2014.3001.5501icon-default.png?t=N7T8https://blog.csdn.net/LDDHEU/article/details/133563784?spm=1001.2014.3001.5501

2.cgns静态链接库编译

这一节中HDF5和CMake的安装也与动态链接库的安装相同。这里我们直接从CGNS的编译说起。

2.1 CMake配置源码

a. 解压CGNS-4.3.0.zip后可以看到一堆源码,在包含src和CMakeLists.txt的目录下创建build文件夹

图1 cgns解压后的目录文件及新创建的build文件夹

b. 打开cmake-gui,

在where is the source code选包含src和CMakeLists.txt的目录,我的是 C:\Users\Li Dongdong\Desktop\CGNS\cgnsfortran\Software for CGNS library compilation\CGNS-4.3.0\CGNS-4.3.0,

在where to build the binaries选刚创建的build文件夹:

C:\Users\Li Dongdong\Desktop\CGNS\cgnsfortran\Software for CGNS library compilation\CGNS-4.3.0\CGNS-4.3.0\build

单击Configure,选择VS 17 2022编译器,x64,如图2所示。

图2 CMake配置界面

c. 上一步点击Finish后,等待一会会cmake界面中间会出现红色填充的内容,去掉CGNS_BUILD_SHARED的勾选,勾选CGNS_ENABLE_64BIT、CGNS_ENABLE_FORTRAN、CGNS_ENABLE_HDF5、CGNS_USE_SHARED,注意一下CMAKE_INSTALL_PREFIX对应的Value,这里是最终编译出的cgns的位置,如图3所示,这里为了避免破坏动态链接库,我们将安装位置改为了C:\cgns.

图3  CMake选项完成后的界面

 d. 依次单击Configure, Generate,没有意外的话会看到下面的界面,Configure done和Generate done。这时会看到创建的build文件夹下出现了很多内容。

图4 CMake编译完成的界面

2.2 VS 编译成库

a. 以管理员身份运行VS2022,打开built文件夹下的cgns.sln(点击右侧打开项目或解决方案),此时直接重新生成解决方案即可成功,如图5所示,而后右键INSTALL->仅用于项目->进重新生成,成功后会在cmake_install_prefix指定的目录(我们在上面默认的是C:\cgns)下出现bin、include、lib三个文件夹。

图5 生成解决方案成功

 

图6 cgns三个文件夹的内容

b. lib和include文件整理:在cgns文件目录下创建一个cgnsdev的文件(可以用其他名字也可以创建在其他位置),将cgns目录下lib文件夹下的cgns.lib文件及include文件下的cgns.mod和cgnstypes_f03.h复制到新创建的cgnsdev文件下,将HDF5目录下lib文件夹下的(C:\Program Files\HDF_Group\HDF5\1.12.1\lib)libaec.lib、libhdf5.lib、libsz.lib、libzlib.lib也复制到cgnsdev文件下。最终cgnsdev文件下包含如图7所示的文件。

图7 静态链接库的内容

3 cgns动态链接库的使用

a.打开VS 2022创建一个新的Fortran项目,然后从cgns源码(C:\Users\Li Dongdong\Desktop\CGNS\cgnsfortran\Software for CGNS library compilation\CGNS-4.3.0\CGNS-4.3.0\src\Test_UserGuideCode\Fortran_code)里复制一个代码到创建的项目里。这里我们以write_grid_unst.F90为例(我这里直接复制了里面的代码,粘贴到新建的一个源项目里),如图8所示。

图8 一个Fortran源项目

b. cgns库的链接。 在项目->属性->Fortran->General->Additional Include Directories中加入目录C:\cgns\cgnsdev,在项目->属性->Linker->General->Additional Library Directories中加入CGNS安装目录C:\cgns\cgnsdev,在项目->属性->Linker->Input->Additional Dependencies中加入cgns.lib libhdf5.lib libaec.lib libsz.lib libzlib.lib,在项目->属性->Fortran->Preprocessor->Preprocess Source File改为Yes (/fpp),具体如图9所示。

图9 fortran中静态链接库的链接使用

这里链接的文件是可以直接复制到其他位置的 ,只需要在使用时准确给定其路径就行,比如我们将整理的库文件复制到当前解决方案下,对应的路径改到当前目录下即可。

c. 代码的编译运行和网格文件检验:此时一切顺利的话,这段代码可以正常编译和运行了,运行结束后程序目录下会出现一个grid.cgns的网格文件,采用tecplot打开后可以看到图10所示的网格。

图10  tecplot中显示生成的网格

参考文献


这里主要参考了下面两篇文章的内容,尤其第二位大佬的分享内容,按照里面的内容很快搞定。

 1 CGNS快速入门到实战(一):CGNS静态链接库编译_cgns编译_ahang_99的博客-CSDN博客

2 VS 2019+IVF2020 Fortran使用CGNS库_ivf2020安装包_圆滚滚啃橙狮的博客-CSDN博客
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值