Troubleshooting

Troubleshooting

Build Gagal dengan Kesalahan C++20

Aspose.PDF FOSS untuk C++ memerlukan kompiler C++20 — clang 16+, gcc 13+, atau MSVC 2022 17.5+. Jika build Anda gagal dengan kesalahan seperti “designated initializers only allowed in C++20” atau “concepts require ‘-std=c++20’”, proyek yang mengonsumsi tidak mengompilasi dengan standar C++20 yang diaktifkan.

Setel standar secara eksplisit sebelum menambahkan perpustakaan sebagai subdirektori:

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)

Di baris perintah ini sesuai dengan -std=c++20 (clang/gcc) atau /std:c++20 (MSVC).

Konfigurasi CMake Gagal — Versi Terlalu Lama

Proyek ini memerlukan CMake 3.22 atau lebih baru. Menjalankan CMake yang lebih lama menghasilkan kesalahan serupa dengan:

CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
  CMake 3.22 or higher is required.  You are running version 3.16.3

Periksa versi yang terpasang dan tingkatkan alih-alih mengedit CMakeLists.txt yang disertakan:

cmake --version

Pasang rilis terkini dari cmake.org atau manajer paket Anda — versi minimum mencerminkan generator dan fitur bahasa yang sebenarnya digunakan oleh proses build, bukan batas minimum sewenang-wenang.

FetchContent Gagal Mengunduh Repository

Jika Anda vendor perpustakaan dengan FetchContent alih-alih add_subdirectory manual, kegagalan pada waktu konfigurasi biasanya merupakan masalah jaringan bukan masalah CMake:

include(FetchContent)
FetchContent_Declare(
    aspose_pdf_foss
    GIT_REPOSITORY https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp.git
    GIT_TAG        main
)
FetchContent_MakeAvailable(aspose_pdf_foss)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)

FetchContent_MakeAvailable menjalankan git clone selama konfigurasi CMake. Di balik proxy atau firewall perusahaan, atau pada runner CI yang terisolasi, ini gagal dengan Failed to clone repository. Untuk memperbaikinya:

  • Setel HTTPS_PROXY/HTTP_PROXY untuk langkah konfigurasi CMake, atau
  • Pra-kloning repositori sekali dan arahkan FETCHCONTENT_SOURCE_DIR_ASPOSE_PDF_FOSS ke checkout lokal sehingga FetchContent menggunakan kembali itu alih-alih mengambil lewat jaringan, atau
  • Vendor sumber secara langsung dan gunakan add_subdirectory(), yang tidak memiliki ketergantungan jaringan pada waktu konfigurasi.

Referensi Tidak Didefinisikan / Simbol Eksternal Tidak Terpecahkan pada Waktu Linking

Kompilasi berhasil tetapi penautan gagal dengan undefined reference to Aspose::Pdf::Document::... (gcc/clang) atau kesalahan unresolved external symbol (MSVC). Ini hampir selalu disebabkan oleh salah satu dari dua hal berikut:

  1. Langkah tautan yang hilang — target_link_libraries(your_app PRIVATE aspose_pdf_foss) tidak ada atau salah eja. add_subdirectory() sendirian hanya membuat header terlihat; tidak menautkan pustaka statis.
  2. Ketidaksesuaian pustaka runtime / tipe build pada MSVC — menautkan sebuah Release-dibangun aspose_pdf_foss.lib menjadi Debug eksekutabel (atau sebaliknya) mencampur perpustakaan runtime C yang tidak kompatibel dan gagal dengan LNK2038 ketidaksesuaian. Bangun perpustakaan dan aplikasi Anda dengan yang sama CMAKE_BUILD_TYPE (atau yang sama /MD//MDd pengaturan perpustakaan runtime).

Pengecekan Tipe Metadata XMP Selalu Mengembalikan False

XmpValue — tipe nilai yang dikembalikan dari entri Document.Metadata() — menyediakan pembantu pengecekan tipe IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues(), dan IsStructure(). Pada rilis saat ini keenam metode ini adalah stub yang selalu mengembalikan false, sehingga kode yang bercabang berdasarkan mereka untuk membedakan jenis nilai XMP selalu mengambil jalur “false”.

Gunakan pengecekan yang diimplementasikan sebagai gantinya — IsString(), IsInteger(), IsDouble(), IsArray() — atau panggil accessor yang cocok (ToStringValue(), ToInteger(), ToDouble(), ToArray()) secara langsung ketika jenis nilai sudah diketahui dari konteks. Sebuah sejumlah kecil tipe internal tingkat rendah (BitmapInfo’s default constructor, dan tipe internal Encoding serta Value yang digunakan oleh model objek PDF) juga berisi badan stub yang tidak dieksekusi oleh kode pemrosesan dokumen tipikal.

Lihat Juga

 Bahasa Indonesia