Troubleshooting

Troubleshooting

Construirea eșuează cu erori C++20

Aspose.PDF FOSS pentru C++ necesită un compilator C++20 — clang 16+, gcc 13+, sau MSVC 2022 17.5+. Dacă construcția dumneavoastră eșuează cu erori precum “designated initializers only allowed in C++20” sau “concepts require ‘-std=c++20’”, proiectul consumator nu compilează cu standardul C++20 activat.

Setați standardul explicit înainte de a adăuga biblioteca ca subdirector:

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)

În linia de comandă, aceasta corespunde cu -std=c++20 (clang/gcc) sau /std:c++20 (MSVC).

Configurarea CMake eșuează — Versiune prea veche

Proiectul necesită CMake 3.22 sau o versiune ulterioară. Rularea unei versiuni mai vechi de CMake produce o eroare similară cu:

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

Verificați versiunea instalată și actualizați în loc să editați CMakeLists.txt furnizat:

cmake --version

Instalați o versiune curentă de la cmake.org sau managerul dumneavoastră de pachete — versiunea minimă reflectă generatorul și caracteristicile limbajului pe care le folosește efectiv construcția, nu un prag arbitrar.

FetchContent Nu reușește să descarce depozitul

Dacă furnizați biblioteca cu FetchContent în loc de un add_subdirectory manual, erorile în timpul configurării sunt de obicei o problemă de rețea mai degrabă decât o problemă 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 rulează git clone în timpul configurării CMake. Din spatele unui proxy corporativ sau firewall, sau pe un executor CI izolat, acest lucru eșuează cu Failed to clone repository. Pentru a rezolva:

  • Setați HTTPS_PROXY/HTTP_PROXY pentru pasul de configurare CMake, sau
  • Pre-clonați depozitul o singură dată și indicați FETCHCONTENT_SOURCE_DIR_ASPOSE_PDF_FOSS spre copia locală astfel încât FetchContent să o reutilizeze în loc să o descarce prin rețea, sau
  • Furnizați sursa direct și utilizați add_subdirectory(), care nu are nicio dependență de rețea în timpul configurării.

Referință nedefinită / Simbol extern nerezolvat în timpul legării

Compilarea reușește, dar legarea eșuează cu undefined reference to Aspose::Pdf::Document::... (gcc/clang) sau cu o eroare unresolved external symbol (MSVC). Acest lucru este aproape întotdeauna cauzat de una dintre cele două situații:

  1. Pas de legare lipsă — target_link_libraries(your_app PRIVATE aspose_pdf_foss) lipsește sau este scris greșit. add_subdirectory() singur face doar antetele vizibile; nu leagă biblioteca statică.
  2. Neconcordanță între biblioteca de rulare / tipul de construcție pe MSVC — legarea unui Release-construit aspose_pdf_foss.lib într-un Debug executabil (sau invers) amestecă biblioteci C runtime incompatibile și eșuează cu LNK2038 neconcordanțe. Construiți biblioteca și aplicația dvs. cu același CMAKE_BUILD_TYPE (sau același /MD//MDd setare a bibliotecii runtime).

Verificările tipului de metadate XMP returnează întotdeauna fals

XmpValue — tipul de valoare returnat din intrările Document.Metadata() — expune ajutoare de verificare a tipului IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues() și IsStructure(). În versiunea curentă aceste șase metode sunt stub-uri care returnează necondiționat false, astfel că codul care le ramifică pentru a distinge tipurile de valori XMP ia întotdeauna calea „false”.

Folosiți în schimb verificările implementate — IsString(), IsInteger(), IsDouble(), IsArray() — sau apelați direct accesatorul corespunzător (ToStringValue(), ToInteger(), ToDouble(), ToArray()) când tipul valorii este deja cunoscut din context. Un număr mic de tipuri interne de nivel scăzut (BitmapInfo constructorul său implicit și tipurile interne Encoding și Value utilizate de modelul de obiect PDF) conțin, de asemenea, corpuri de tip stub care nu sunt utilizate de codul tipic de procesare a documentelor.

Vezi și:

 Română