作者的开发环境配置为:Win7+Qt5.14.2+VS2017,目的是编译CCfits库,但是它依赖于cfitsio库,而cfitsio库又依赖于zlib库。因此,完成CCfits库的编译需要完成以下3个库的编译:

1)zlib:zlib-1.2.11,zlib Home Site

2)cfitsio:cfitsio-4.0.0,FITSIO Home Page

3)CCfits:CCfits-2.6,CCfits: C++ Wrappers for the cfitsio library

编译库首先需要安装CMake,作者使用的版本是CMake 3.17.2,Windows下许多第三方跨平台库的编译均需要使用CMake,这里不赘述。另外,作者在最初的编译的过程中,总是编译失败,CMakeError.log中的错误提示为“LINK:fatal error LNK1104:无法打开文件“ucrtd.lib””,最终明确原因为“CMake未能明确Windows版本”,需要在编译时主动将Windows版本号作为参数传递给CMake,即增加“-DCMAKE_SYSTEM_VERSION=10.0.14393.0”,解决方法来自博客。在Windows下使用批处理的方式进行编译十分方便,下面作者给出编译3个库的完整编译批处理命令以及批处理文件路径截图:

1)编译zlib库

cd/d "%~dp0"
mkdir zlib.build
cd zlib.build
cmake -G "Visual Studio 15 2017 Win64" ..\zlib-1.2.11 -DCMAKE_INSTALL_PREFIX=c:\Users\zhoukehu\zlib -DCMAKE_SYSTEM_VERSION=10.0.14393.0
cmake --build . --config Release
cmake --install .
pause

2)编译cfitsio库

cd/d "%~dp0"
mkdir cfitsio.build
cd cfitsio.build
cmake -G "Visual Studio 15 2017 Win64" ..\cfitsio-4.0.0 -DCMAKE_INSTALL_PREFIX=c:\Users\zhoukehu\cfitsio -DCMAKE_PREFIX_PATH=c:\Users\zhoukehu\zlib -DCMAKE_SYSTEM_VERSION=10.0.14393.0
cmake --build . --config Release
cmake --install .
pause

3)编译 CCfits库

cd/d "%~dp0"
mkdir CCfits.build
cd CCfits.build
cmake -G "Visual Studio 15 2017 Win64" ..\CCfits-2.6 -DCMAKE_INSTALL_PREFIX=c:\Users\zhoukehu\CCfits -DCMAKE_PREFIX_PATH=c:\Users\zhoukehu\cfitsio -DCMAKE_SYSTEM_VERSION=10.0.14393.0
cmake --build . --config Release
cmake --install .
pause

作者将Win7下通过VS2017编译的x64版本的CCfits库分享出来(注意:最终编译的CCfits库只有lib库,而没有对应的dll,zlib库和cfitsio库则均包含了lib和dll):

链接:百度网盘 请输入提取码 
提取码:5mx4

作者根据CCfits库的文档编写了16位图像保存为Fits格式文件的代码,如下:

#include "CCfits/CCfits.h"
using namespace CCfits;/*** @brief 将16位图像数据保存为Fits格式图像* @param pImg 图像数据指针* @param nWidth 图像宽度(单位:像素)* @param nHeight 图像高度(单位:像素)* @param strFilePath Fits图像保存路径,含后缀名(fits、fit等)* @param lfRA 保存的图像附加信息* @param lfDec 保存的图像附加信息* @return*/
bool saveFits16UC1(uchar* pImg,ushort nWidth,ushort nHeight,QString strFilePath,double lfRA,double lfDec)
{//写FITS文件long naxis = 2;long naxes[2] = { nWidth, nHeight };FITS* pFits = nullptr;try{pFits = new FITS(strFilePath.toLocal8Bit().toStdString(), USHORT_IMG , naxis , naxes);}catch (FITS::CantCreate){qDebug() << "FITS::CantCreate";return false ;}long nelements = nWidth*nHeight;long fpixel(1);std::valarray<unsigned short> array((unsigned short*)pImg,nelements);pFits->pHDU().addKey("RA_TEL",lfRA,"Telescope R.A. in Equinox");pFits->pHDU().addKey("DEC_TEL",lfDec,"Telescope DEC. in Equinox");pFits->pHDU().write(fpixel,nelements,array);delete pFits;pFits = nullptr;return true;
}

Windows平台下Fits格式文件读写C++库CCfits编译过程相关推荐

  1. windows平台下vlc编译之六:vlc-0.9.8a的编译

    请移步https://higoge.github.io/,所有下载资料在那个博客都能找到.谢谢. --------------------------------------------------- ...

  2. Windows平台下Makefile学习笔记

    来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译平台的问题(发现一些开源代码已经在使用VS2010开发,但我还没安 ...

  3. windows平台下vlc编译

    转自:http://jeremiah.blog.51cto.com/539865/114190     Jeremiah刚刚工作几个月,参与的第一个项目是与视频监控有关,分配给我的任务就是用开源的vl ...

  4. Windows平台下Git服务器搭建

    初识Git Git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑, ...

  5. Windows平台下NS2网络仿真环境的搭建

    NS2(Network Simulator 2) 是一种针对网络技术的源代码公开的.免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术 ...

  6. Windows平台下Glade+GTK开发环境的搭建

    [@.1 MVVM设计模式与Glade] 做上层软件开发的程序员可能对于MVVM模式比较熟悉,这是一种经典的软件设计模式,很好的将用户界面与后台处理之间分层开,通过属性.事件绑定这种统一的" ...

  7. Windows平台下Mediasoup客户端开发指南

    操作系统:Windows 10 IDE: Visual Studio 2019 GitHub:https://github.com/versatica/libmediasoupclient/ 官网文档 ...

  8. windows平台下VLC2.0.5编译

    windows平台下VLC2.0.5编译说明 时隔一年多,又要搞流媒体了,不过这次是要做流媒体服务器. 暂时决定使用vlc+ffmpeg+live555,虽然听有些前辈说这个组合的性能较差,只能作为学 ...

  9. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  10. 在Python中FITS格式文件数据的读取 (转载)

    在Python中FITS格式文件数据的读取 (转载) 前言 \space\space\space\space     FITS(Flexible Image Transport System)格式文件 ...

最新文章

  1. sudo spctl --master-disable_Φ560加长哈夫节--南宫哈夫节定做厂家
  2. 安装IE8不能调试VS2005的解决办法
  3. python比java简单好学-21、PHP和python/JAVA比,哪个更好学?
  4. Tkinter的Canvas组件
  5. 实现类似Android联系人搜索功能
  6. scp免密码远程拷贝
  7. [转]CISCO IOS命名规则
  8. MapReduce程序之数据排序
  9. scp 不输入密码登录
  10. 二维图像矢量化方法简述
  11. matlab解超越函数,矩阵的超越函数Matlab提供的矩阵函数.PPT
  12. 中国古代亲属称谓家谱总览
  13. 机器学习笔记——乳腺癌鸢尾花分类问题详解(没有直接调包)
  14. css实现实心三角箭头,兼容ie
  15. [转]Apache Ignite——新一代数据库缓存系统
  16. vsftpd参数cmds_allowed
  17. Xmas snow for Mac(圣诞桌面装饰软件)
  18. 虚拟机安装windows10
  19. SCAU 1037 计算数列和
  20. android下存储设备的使用

热门文章

  1. linux mint xmind运行,[deepin]安装XMind8并创建运行图标
  2. 什么是单页网站设计?受欢迎的原因在哪?
  3. AEC、AGC、ANS是什么意思?
  4. 置换密码及其python实现
  5. 计算机考试没来得及关掉文档,计算机二级考试挽回受损WORD文档的方法
  6. 秒杀:超卖问题(图解+秒懂+史上最全)
  7. java吉他游戏_[Java]吉他谱浏览器 0.1
  8. 关于自编码器的核心点理解
  9. 数据可视化的方法、工具和应用
  10. 一支手可以代表多大的数呢? 2 的 19 次方。