Skip to content

Cesium iOS build: missing Blend2D static libs (libblend2d.a / libasmjit.a) — causes undefined _blContext* symbols #598

@yohawing

Description

@yohawing

環境

  • Unity バージョン: 6000.0.34f1
  • Cesium for Unity バージョン: 1.17.0
  • ターゲット: iOS (arm64)
  • Xcode バージョン: 16.4
  • macOS: 15.7

再現手順

  1. Unity から iOS ビルドを出力する(Build System = Xcode)
  2. 出力された Unity-iPhone.xcworkspace を開き、ビルドするとリンクエラーが発生する

発生しているエラー(抜粋)

Undefined symbols for architecture arm64:
  "_blContextBegin", referenced from:
      CesiumVectorData::VectorRasterizer::VectorRasterizer(CesiumGeospatial::GlobeRectangle const&, CesiumUtility::IntrusivePointer<CesiumGltf::ImageAsset>&, unsigned int, CesiumGeospatial::Ellipsoid const&) in libCesiumVectorData.a[5](VectorRasterizer.o)
  "_blContextDestroy", referenced from:
      CesiumRasterOverlays::RasterizedPolygonsTileProvider::loadTileImage(CesiumRasterOverlays::RasterOverlayTile&)::'lambda'()::operator()() const in libCesiumRasterOverlays.a[13](RasterizedPolygonsOverlay.o)
      CesiumVectorData::VectorRasterizer::~VectorRasterizer() in libCesiumRasterOverlays.a[13](RasterizedPolygonsOverlay.o)
  "_blContextEnd", referenced from:
      CesiumVectorData::VectorRasterizer::finalize() in libCesiumVectorData.a[5](VectorRasterizer.o)
  "_blContextInit", referenced from:
      CesiumVectorData::VectorRasterizer::VectorRasterizer(CesiumGeospatial::GlobeRectangle const&, CesiumUtility::IntrusivePointer<CesiumGltf::ImageAsset>&, unsigned int, CesiumGeospatial::Ellipsoid const&) in libCesiumVectorData.a[5](VectorRasterizer.o)
  "_blImageCreateFromData", referenced from:
      CesiumVectorData::VectorRasterizer::VectorRasterizer(CesiumGeospatial::GlobeRectangle const&, CesiumUtility::IntrusivePointer<CesiumGltf::ImageAsset>&, unsigned int, CesiumGeospatial::Ellipsoid const&) in libCesiumVectorData.a[5](VectorRasterizer.o)
  "_blImageDestroy", referenced from:
      CesiumRasterOverlays::RasterizedPolygonsTileProvider::loadTileImage(CesiumRasterOverlays::RasterOverlayTile&)::'lambda'()::operator()() const in libCesiumRasterOverlays.a[13](RasterizedPolygonsOverlay.o)
      CesiumVectorData::VectorRasterizer::~VectorRasterizer() in libCesiumRasterOverlays.a[13](RasterizedPolygonsOverlay.o)
  "_blImageInit", referenced from:
      CesiumVectorData::VectorRasterizer::VectorRasterizer(CesiumGeospatial::GlobeRectangle const&, CesiumUtility::IntrusivePointer<CesiumGltf::ImageAsset>&, unsigned int, CesiumGeospatial::Ellipsoid const&) in libCesiumVectorData.a[5](VectorRasterizer.o)
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

確認したこと

  • 出力フォルダ内の lib を確認したところ、libblend2d.alibasmjit.a が含まれていませんでした(これらが無いと _blContext* および _blImage* シンボルが未定義になります)。
  • 該当シンボルは Cesium のベクタ/ポリゴンラスタライズ処理(VectorRasterizer / RasterizedPolygonsOverlay)が Blend2D の C API を呼んでいる箇所から参照されています。

期待動作

  • Cesium の iOS 出力に libblend2d.alibasmjit.a(arm64対応の静的ライブラリ)が同梱されており、Xcodeビルド時にリンクエラーが出ないこと。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingurgentFor high priority issues and bugs

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions