0

AA+ 天文学クラス フレームワークを使用したいのですが、サンプル アプリを実行したいだけです (フレームワークの zip ファイルに として含まれていますAATest.cpp) 。

Xcode を開き、C++ アプリ用の新しいプロジェクトを作成し、ファイルが含まれているためAA+.hstdafx.hファイルをプロジェクトに追加しました。その後、プロジェクトをビルドすると、サンプル アプリ コードの一部に関連付けられているシンボルが見つからないように見えるため、多くのリンカー エラーが発生します。

AA+.hXcodeのビルド設定内のライブラリとヘッダー検索パスへのファイルへのパスを追加しようとしましたstdafx.hが、何も変更されず、エラーはまだそこにあります。

私は何を間違っていますか?Xcode 内で C++ を使用するのはこれが初めてです。最初に AA+ フレームワークを静的ライブラリとして構築する必要がありますか? それとも、この方法で組み込むことができますか?

Xcode によるコンパイル:

Ld /Users/me/Library/Developer/Xcode/DerivedData/AAPlus-bzgonjwgqlpgescueekcoobljdyf/Build/Products/Debug/AAPlus normal x86_64
    cd "/Users/me/Downloads/aaplus astronomy c++/Example/AAPlus"
    setenv MACOSX_DEPLOYMENT_TARGET 10.7
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -L/Users/me/Library/Developer/Xcode/DerivedData/AAPlus-bzgonjwgqlpgescueekcoobljdyf/Build/Products/Debug -F/Users/me/Library/Developer/Xcode/DerivedData/AAPlus-bzgonjwgqlpgescueekcoobljdyf/Build/Products/Debug -filelist /Users/me/Library/Developer/Xcode/DerivedData/AAPlus-bzgonjwgqlpgescueekcoobljdyf/Build/Intermediates/AAPlus.build/Debug/AAPlus.build/Objects-normal/x86_64/AAPlus.LinkFileList -mmacosx-version-min=10.7 -stdlib=libc++ -o /Users/me/Library/Developer/Xcode/DerivedData/AAPlus-bzgonjwgqlpgescueekcoobljdyf/Build/Products/Debug/AAPlus

エラー:

Undefined symbols for architecture x86_64:
  "CAANutation::TrueObliquityOfEcliptic(double)", referenced from:
      GetSolarRaDecByJulian(double, double&, double&) in main.o
      GetLunarRaDecByJulian(double, double&, double&) in main.o
  "CAADynamicalTime::DeltaT(double)", referenced from:
      GetSolarRaDecByJulian(double, double&, double&) in main.o
  "CAARiseTransitSet::Calculate(double, double, double, double, double, double, double, double, double, double)", referenced from:
      GetSunRiseTransitSet(double, double, double) in main.o
      GetMoonRiseTransitSet(double, double, double) in main.o
  "CAAMoonIlluminatedFraction::PhaseAngle(double, double, double)", referenced from:
      GetMoonIllumination(double, double&, double&, double&) in main.o
  "CAAMoonIlluminatedFraction::PositionAngle(double, double, double, double)", referenced from:
      GetMoonIllumination(double, double&, double&, double&) in main.o
  "CAAMoonIlluminatedFraction::IlluminatedFraction(double)", referenced from:
      GetMoonIllumination(double, double&, double&, double&) in main.o
  "CAAMoonIlluminatedFraction::GeocentricElongation(double, double, double, double)", referenced from:
      GetMoonIllumination(double, double&, double&, double&) in main.o
  "CAACoordinateTransformation::Ecliptic2Equatorial(double, double, double)", referenced from:
      GetSolarRaDecByJulian(double, double&, double&) in main.o
      GetLunarRaDecByJulian(double, double&, double&) in main.o
  "CAASun::ApparentEclipticLatitude(double)", referenced from:
      GetSolarRaDecByJulian(double, double&, double&) in main.o
  "CAASun::ApparentEclipticLongitude(double)", referenced from:
      GetSolarRaDecByJulian(double, double&, double&) in main.o
  "CAADate::CAADate(double, bool)", referenced from:
      PrintTime(double, char const*) in main.o
  "CAADate::CAADate(long, long, double, bool)", referenced from:
      PrintSunAndMoonInfo(int, int, int, double, double) in main.o
  "CAAMoon::EclipticLatitude(double)", referenced from:
      GetLunarRaDecByJulian(double, double&, double&) in main.o
  "CAAMoon::EclipticLongitude(double)", referenced from:
      GetLunarRaDecByJulian(double, double&, double&) in main.o
  "CAADate::Get(long&, long&, long&, long&, long&, double&) const", referenced from:
      PrintTime(double, char const*) in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

1 に答える 1

1

Xコード

XCode では次のことができます。

  1. 新しいプロジェクトを作成するAATest
  2. aaplus/フレームワーク コードを含むフォルダーをプロジェクト フォルダーにコピーします。
  3. XCode プロジェクトで、ソースcontrolを押したままクリックします
  4. [追加] > [既存のファイル...] を選択します。
  5. aaplus/フォルダーを選択し、プロジェクトに追加します
  6. 建てる。

実行可能ファイルはbuild/Debug/AATest.

プロジェクトにはファイルが含まれているCMakeLists.txtため、cmake. フレームワーク フォルダー内で、ターミナルで次のコマンドを実行します。

mkdir build/
cd build/
cmake ..
make
于 2012-10-02T20:14:49.953 に答える