Troubleshooting

Troubleshooting

Az építés C++20 hibákkal meghiúsul

Aspose.PDF FOSS for C++ egy C++20 fordítót igényel — clang 16+, gcc 13+, vagy MSVC 2022 17.5+. Ha az építésed olyan hibákkal meghiúsul, mint a “designated initializers only allowed in C++20” vagy a “concepts require ‘-std=c++20’”, akkor a felhasználó projektje nem a C++20 szabványt használja.

Állítsd be a szabványt explicit módon, mielőtt a könyvtárat alkönyvtárként hozzáadnád:

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)

Parancssorban ez a -std=c++20 (clang/gcc) vagy a /std:c++20 (MSVC) megfelelője.

A CMake konfiguráció meghiúsul — a verzió túl régi

A projekt CMake 3.22 vagy újabb verziót igényel. Egy régebbi CMake futtatása hasonló hibát eredményez:

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

Ellenőrizd a telepített verziót, és frissítsd, ahelyett, hogy a vendorizált CMakeLists.txt fájlt szerkesztenéd:

cmake --version

Telepíts egy aktuális kiadást a cmake.org vagy a csomagkezelőddel — a minimális verzió a generátor és a nyelvi funkciók tényleges használatát tükrözi, nem egy tetszőleges alsó határt.

FetchContent Nem tudja letölteni a tárolót

Ha a könyvtárat a FetchContent használatával vendorálod a manuális add_subdirectory helyett, a konfigurációs idő alatti hibák általában hálózati problémák, nem CMake problémák:

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)

A FetchContent_MakeAvailable a git clone parancsot futtatja a CMake konfiguráció során. Vállalati proxy vagy tűzfal mögött, vagy egy levegőn levágott CI futtatón ez Failed to clone repository hibával bukik. A javításhoz:

  • Állítsd be a HTTPS_PROXY/HTTP_PROXY értéket a CMake konfigurációs lépéshez, vagy
  • Előre klónozd a tárolót egyszer, és irányítsd a FETCHCONTENT_SOURCE_DIR_ASPOSE_PDF_FOSS-t a helyi checkout-ra, hogy a FetchContent újra felhasználja azt a hálózaton keresztüli letöltés helyett, vagy
  • Vendoráld közvetlenül a forrást, és használd a add_subdirectory()-t, amelynek nincs hálózati függősége a konfigurációs időben.

Nem definiált hivatkozás / Feloldatlan külső szimbólum a linkeléskor

A fordítás sikeres, de a linkelés undefined reference to Aspose::Pdf::Document::... (gcc/clang) vagy unresolved external symbol hiba (MSVC) miatt meghiúsul. Ez szinte mindig az alábbi két ok egyike:

  1. Hiányzó linklépés — target_link_libraries(your_app PRIVATE aspose_pdf_foss) hiányzik vagy el van gépelve. add_subdirectory() magában csak a fejléceket teszi láthatóvá; nem linkeli a statikus könyvtárat.
  2. Futtatókörnyezet könyvtár / build-típus eltérés MSVC-n — linkelve egy Release-épített aspose_pdf_foss.lib egy Debug végrehajtható (vagy fordítva) keveri az inkompatibilis C futtatókörnyezet könyvtárakat és hibát okoz LNK2038 eltérésekkel. Építsd a könyvtárat és az alkalmazásodat ugyanazzal CMAKE_BUILD_TYPE (vagy ugyanazzal /MD//MDd futtatókörnyezet könyvtár beállítás).

Az XMP metaadat típusellenőrzések mindig hamisat adnak vissza

XmpValue — a Document.Metadata() bejegyzésekből visszakapott értéktípus — olyan típusellenőrző segédfüggvényeket tesz elérhetővé, mint IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues() és IsStructure(). A jelenlegi kiadásban ez a hat függvény csak helykitöltő, és feltétlenül false értéket ad vissza, így a kód, amely ezek alapján különbözteti meg az XMP értéktípusokat, mindig a “false” ágat választja.

Használd inkább a megvalósított ellenőrzéseket — IsString(), IsInteger(), IsDouble(), IsArray() — vagy hívd meg közvetlenül a megfelelő accessor-t (ToStringValue(), ToInteger(), ToDouble(), ToArray()), ha az érték típusa már a kontextusból ismert. Egy kisebb számú alacsony szintű belső típus (BitmapInfo alapértelmezett konstruktorja, valamint a PDF objektummodell által használt belső Encoding és Value típusok) szintén tartalmaz helykitöltő testeket, amelyeket a tipikus dokumentumfeldolgozó kód nem hív meg.

Lásd még:

 Magyar