Troubleshooting

Troubleshooting

Échec de la compilation avec des erreurs C++20

Aspose.PDF FOSS pour C++ nécessite un compilateur C++20 — clang 16+, gcc 13+ ou MSVC 2022 17.5+. Si votre construction échoue avec des erreurs telles que “designated initializers only allowed in C++20” ou “concepts require ‘-std=c++20’”, le projet consommateur ne compile pas avec la norme C++20 activée.

Définissez la norme explicitement avant d’ajouter la bibliothèque comme sous-répertoire:

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)

En ligne de commande, cela correspond à -std=c++20 (clang/gcc) ou /std:c++20 (MSVC).

Échec de la configuration CMake — Version trop ancienne

Le projet nécessite CMake3.22 ou une version ultérieure. L’exécution d’une version plus ancienne de CMake produit une erreur similaire à:

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

Vérifiez la version installée et mettez-la à jour plutôt que de modifier le CMakeLists.txt fourni:

cmake --version

Installez une version actuelle depuis cmake.org ou votre gestionnaire de paquets — la version minimale reflète le générateur et les fonctionnalités du langage réellement utilisées par la construction, et non un seuil arbitraire.

FetchContent échoue à télécharger le dépôt

Si vous fournissez la bibliothèque avec FetchContent au lieu d’un add_subdirectory manuel, les échecs lors de la configuration sont généralement un problème réseau plutôt qu’un problème 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 exécute git clone pendant la configuration CMake. Derrière un proxy d’entreprise ou un pare-feu, ou sur un runner CI isolé, cela échoue avec Failed to clone repository. Pour le corriger:

  • Définissez HTTPS_PROXY/HTTP_PROXY pour l’étape de configuration CMake, ou
  • Clonez préalablement le dépôt une fois et pointez FETCHCONTENT_SOURCE_DIR_ASPOSE_PDF_FOSS vers la copie locale afin que FetchContent le réutilise plutôt que de le récupérer via le réseau, ou
  • Fournissez directement le code source et utilisez add_subdirectory(), qui n’a aucune dépendance réseau lors de la configuration.

Référence indéfinie / Symbole externe non résolu lors de l’étape de liaison

La compilation réussit mais la liaison échoue avec undefined reference to Aspose::Pdf::Document::... (gcc/clang) ou une erreur unresolved external symbol (MSVC). C’est presque toujours l’une des deux causes:

  1. Étape de liaison manquante — target_link_libraries(your_app PRIVATE aspose_pdf_foss) est manquante ou mal orthographiée. add_subdirectory() seul rend les en-têtes visibles ; il ne lie pas la bibliothèque statique.
  2. Incohérence entre la bibliothèque d’exécution et le type de construction sur MSVC — liaison d’un Release-construit aspose_pdf_foss.lib dans un Debug exécutable (ou inversement) mélange des bibliothèques d’exécution C incompatibles et échoue avec LNK2038 incompatibilités. Compilez la bibliothèque et votre application avec le même CMAKE_BUILD_TYPE (ou le même /MD//MDd paramètre de bibliothèque d’exécution).

Les vérifications de type des métadonnées XMP renvoient toujours false

XmpValue — le type de valeur renvoyé par les entrées Document.Metadata() — expose les aides de vérification de type IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues() et IsStructure(). Dans la version actuelle, ces six méthodes sont des stubs qui renvoient inconditionnellement false, de sorte que le code qui s’en sert pour distinguer les types de valeurs XMP emprunte toujours le chemin “false”.

Utilisez plutôt les vérifications implémentées — IsString(), IsInteger(), IsDouble(), IsArray() — ou appelez l’accesseur correspondant (ToStringValue(), ToInteger(), ToDouble(), ToArray()) directement lorsque le type de la valeur est déjà connu du contexte. Un petit nombre de types internes de bas niveau (le constructeur par défaut de BitmapInfo, ainsi que les types internes Encoding et Value utilisés par le modèle d’objet PDF) contiennent également des corps de stub qui ne sont pas exercés par le code de traitement de documents typique.

Voir aussi

 Français