那么...有人能看到我在这里做错了什么吗?!?我正在尝试阅读*.fits
在 C++ 中使用文件CCfits
按照他们的例子http://heasarc.gsfc.nasa.gov/fitsio/CCfits/html/readimage.html http://heasarc.gsfc.nasa.gov/fitsio/CCfits/html/readimage.html.
#include <iostream>
#include <valarray>
#include <CCfits/CCfits.h>
#include <CCfits/PHDU.h>
namespace fit = CCfits;
int main(int argc, char * argv[]) {
fit::FITS inFile(
"../data/example/example.fits",
fit::Read,
true
);
fit::PHDU & phdu = inFile.pHDU();
std::valarray<unsigned int> fitsImage;
phdu.read(fitsImage);
return 0;
}
我收到以下错误:
undefined reference to `void CCfits::PHDU::read<unsigned int>(std::valarray<unsigned int>&)'
collect2: error: ld returned 1 exit status
我与此链接:
g++ test.cpp -o test -L/usr/lib/x86_64-linux-gnu/ -std=c++11 -lCCfits -lcfitsio
虽然我看了/usr/include/CCfits/PHDU.h
它有这个:
template<typename S>
void read(std::valarray<S>& image);
有没有可能libCCfits
没有编译对吗?
(这个有点关系到CCfits 库演示代码不起作用 https://stackoverflow.com/questions/17829788/ccfits-library-demo-code-not-working,但由于没有人真正扩展这一点......我什么也没有留下)。这让我发疯,我想我错过了一些非常明显的东西。
Thanks.
如果没有libCCfits.so
,这是您使用的 Linux 发行版中的错误。 (我在较旧的 Fedora 发行版上遇到了与其他库的等效网络问题。)修复它的最简单方法是添加一个符号链接libCCfits.so
and libCCfits.so.0
to libCCfits.so.0.0.0
,假设后者存在于..../.libs
文件夹。
另一种方法是编译源码包CCfits-2.4.tar.gz
你自己通过
tar -xzf CCfits-2.4.tar.gz
cd CCfits
./configure --prefix=.... --with-cfitsio-include=..../cfitsio/cfitsio --enable-static LDFLAGS="-L..../cfitsio/cfitsio"
其中的点取决于您的偏好以及底层 cfitsio 的位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)