1

私はC++が初めてです。最終的に、超新星のいくつかのシミュレーションで分析を実行するために、Python からいくつかのコードを翻訳しようとしています。ただし、これを行うには、.fits ファイルを配列として C++ コードにインポートできる必要があります。cfitsio および ccfits ライブラリをダウンロードしましたが#include <CCfits>、print ステートメントを含む an および int main で構成される単純なコードがコンパイルおよび実行されることを考えると、正しくインストールされているように見えます。ただし、NASA ( http://heasarc.gsfc.nasa.gov/fitsio/CCfits/html/readimage.html ) からデモ コードを取得し、名前を .fits ファイルに変更して開きたい (これは私の家にあります)これらのライブラリを使用して .fits ファイルをインポートすると、コンパイルされません。私が使用している正確なコード (Sobelattempt.cc) は次のとおりです。

#include <CCfits>
#include <iostream>
#include <cmath>
#include <memory>
using namespace CCfits;
int readimage()
{
     std::auto_ptr<FITS> pInfile(new FITS("Supernova45F.fits",Read,true));

     PHDU& image=pInfile->pHDU(); 

     std::valarray<unsigned long>  contents;

     // read all user-specifed, coordinate, and checksum keys in the image
     image.readAllKeys();

     image.read(contents);

     // this doesn't print the data, just header info.
     std::cout << image << std::endl;

     long ax1(image.axis(0));
     long ax2(image.axis(1));

     for (long j = 0; j < ax2; j+=10)
     {
             std::ostream_iterator<short> c(std::cout,"\t");
             std::copy(&contents[j*ax1],&contents[(j+1)*ax1-1],c);
             std::cout << '\n';       
     }

     std::cout << std::endl;
      return 0;   
}

int main(){
return 0;
}

次のコマンドを使用してコンパイルしています。

g++ Sobelattempt.cc -o Sobel -I/home/Sam/CCfits -I/home/Sam/cfitsio

そして、私はエラーを受け取ります:

/tmp/ccS0m6h4.o: In function `readimage()':
Sobelattempt.cc:(.text+0x69): undefined reference to `CCfits::FITS::FITS(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, CCfits::RWmode, bool, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)'
Sobelattempt.cc:(.text+0x15e): undefined reference to `CCfits::FITS::pHDU()'
Sobelattempt.cc:(.text+0x17d): undefined reference to `CCfits::HDU::readAllKeys()'
/tmp/ccS0m6h4.o: In function `std::auto_ptr<CCfits::FITS>::~auto_ptr()':
Sobelattempt.cc:(.text._ZNSt8auto_ptrIN6CCfits4FITSEED2Ev[_ZNSt8auto_ptrIN6CCfits4FITSEED5Ev]+0x1d): undefined reference to `CCfits::FITS::~FITS()'
/tmp/ccS0m6h4.o: In function `void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)':
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x73): undefined reference to `typeinfo for CCfits::PHDU'
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x12f): undefined reference to `typeinfo for CCfits::PHDU'
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x20d): undefined reference to `typeinfo for CCfits::PHDU'
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x2ec): undefined reference to `typeinfo for CCfits::PHDU'
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x3b5): undefined reference to `CCfits::ULBASE'
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x435): undefined reference to `typeinfo for CCfits::PHDU'
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x4d1): undefined reference to `typeinfo for CCfits::PHDU'
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x59d): undefined reference to `CCfits::USBASE'
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x61d): undefined reference to `typeinfo for CCfits::PHDU'
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x6b9): undefined reference to `typeinfo for CCfits::PHDU'
Sobelattempt.cc:(.text._ZN6CCfits4PHDU4readImEEvRSt8valarrayIT_EllPS3_[void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&, long, long, unsigned long*)]+0x77f): undefined reference to `CCfits::FitsFatal::FitsFatal(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/tmp/ccS0m6h4.o:(.rodata._ZTIN6CCfits10PrimaryHDUImEE[typeinfo for CCfits::PrimaryHDU<unsigned long>]+0x10): undefined reference to `typeinfo for CCfits::PHDU'
/tmp/ccS0m6h4.o:(.rodata._ZTIN6CCfits10PrimaryHDUIsEE[typeinfo for CCfits::PrimaryHDU<short>]+0x10): undefined reference to `typeinfo for CCfits::PHDU'
/tmp/ccS0m6h4.o:(.rodata._ZTIN6CCfits10PrimaryHDUItEE[typeinfo for CCfits::PrimaryHDU<unsigned short>]+0x10): undefined reference to `typeinfo for CCfits::PHDU'
/tmp/ccS0m6h4.o:(.rodata._ZTIN6CCfits10PrimaryHDUIiEE[typeinfo for CCfits::PrimaryHDU<int>]+0x10): undefined reference to `typeinfo for CCfits::PHDU'
/tmp/ccS0m6h4.o:(.rodata._ZTIN6CCfits10PrimaryHDUIjEE[typeinfo for CCfits::PrimaryHDU<unsigned int>]+0x10): undefined reference to `typeinfo for CCfits::PHDU'
/tmp/ccS0m6h4.o:(.rodata._ZTIN6CCfits10PrimaryHDUIhEE[typeinfo for CCfits::PrimaryHDU<unsigned char>]+0x10): more undefined references to `typeinfo for CCfits::PHDU' follow
collect2: ld returned 1 exit status
4

1 に答える 1