Troubleshooting

Troubleshooting

Αποτυχία κατασκευής με σφάλματα C++20

Aspose.PDF FOSS για C++ απαιτεί έναν μεταγλωττιστή C++20 — clang 16+, gcc 13+, ή MSVC 2022 17.5+. Εάν η κατασκευή σας αποτυγχάνει με σφάλματα όπως “designated initializers only allowed in C++20” ή “concepts require ‘-std=c++20’”, το έργο-καταναλωτής δεν μεταγλωττίζει με ενεργοποιημένο το πρότυπο C++20.

Ορίστε το πρότυπο ρητά πριν προσθέσετε τη βιβλιοθήκη ως υποκατάλογο:

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)

Στη γραμμή εντολών αυτό αντιστοιχεί σε -std=c++20 (clang/gcc) ή /std:c++20 (MSVC).

Η διαμόρφωση CMake αποτυγχάνει — Η έκδοση είναι πολύ παλιά

Το έργο απαιτεί CMake 3.22 ή νεότερο. Η εκτέλεση παλαιότερης έκδοσης CMake παράγει σφάλμα παρόμοιο με:

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

Ελέγξτε την εγκατεστημένη έκδοση και αναβαθμίστε αντί να επεξεργαστείτε το ενσωματωμένο CMakeLists.txt:

cmake --version

Εγκαταστήστε μια τρέχουσα έκδοση από cmake.org ή από τον διαχειριστή πακέτων σας — η ελάχιστη έκδοση αντανακλά τα χαρακτηριστικά του γεννήτριας και της γλώσσας που χρησιμοποιεί πραγματικά η κατασκευή, όχι ένα αυθαίρετο κατώφλι.

FetchContent Αποτυγχάνει να Κατεβάσει το Αποθετήριο

Αν ενσωματώνετε τη βιβλιοθήκη με το FetchContent αντί για ένα χειροκίνητο add_subdirectory, τα σφάλματα κατά τη ρύθμιση συνήθως οφείλονται σε πρόβλημα δικτύου και όχι σε πρόβλημα του 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 εκτελεί το git clone κατά τη διάρκεια της ρύθμισης του CMake. Πίσω από εταιρικό proxy ή τείχος προστασίας, ή σε απομονωμένο runner CI, αυτό αποτυγχάνει με Failed to clone repository. Για να το διορθώσετε:

  • Ορίστε το HTTPS_PROXY/HTTP_PROXY για το βήμα ρύθμισης του CMake, ή
  • Προ-κλωνοποιήστε το αποθετήριο μία φορά και κατευθύνετε το FETCHCONTENT_SOURCE_DIR_ASPOSE_PDF_FOSS στη τοπική αποθήκη ώστε το FetchContent να το επαναχρησιμοποιήσει αντί να το κατεβάσει μέσω του δικτύου, ή
  • Ενσωματώστε την πηγή απευθείας και χρησιμοποιήστε το add_subdirectory(), το οποίο δεν έχει εξάρτηση από το δίκτυο κατά το χρόνο ρύθμισης.

Απροσδιόριστη Αναφορά / Ανεπίλυτο Εξωτερικό Σύμβολο κατά τη Σύνδεση

Η μεταγλώττιση ολοκληρώνεται, αλλά η σύνδεση αποτυγχάνει με undefined reference to Aspose::Pdf::Document::... (gcc/clang) ή με σφάλμα unresolved external symbol (MSVC). Αυτό είναι σχεδόν πάντα μία από τις δύο αιτίες:

  1. Λείπει βήμα σύνδεσης — target_link_libraries(your_app PRIVATE aspose_pdf_foss) λείπει ή είναι γραμμένο λανθασμένα. add_subdirectory() μόνο από μόνο του κάνει ορατές τις κεφαλίδες· δεν συνδέει τη στατική βιβλιοθήκη.
  2. Ασυμφωνία βιβλιοθήκης χρόνου εκτέλεσης / τύπου κατασκευής σε MSVC — σύνδεση ενός Release-χτισμένο aspose_pdf_foss.lib σε ένα Debug εκτελέσιμο (ή το αντίστροφο) αναμιγνύει ασυμβίβαστες βιβλιοθήκες χρόνου εκτέλεσης C και αποτυγχάνει με LNK2038 αναντιστοιχίες. Δημιουργήστε τη βιβλιοθήκη και την εφαρμογή σας με το ίδιο CMAKE_BUILD_TYPE (ή το ίδιο /MD//MDd ρύθμιση βιβλιοθήκης χρόνου εκτέλεσης).

Οι έλεγχοι τύπου μεταδεδομένων XMP επιστρέφουν πάντα False

XmpValue — ο τύπος τιμής που επιστρέφεται από καταχωρήσεις Document.Metadata() — εκθέτει βοηθητικές συναρτήσεις ελέγχου τύπου IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues() και IsStructure(). Στην τρέχουσα έκδοση αυτές οι έξι μέθοδοι είναι σκελετοί που επιστρέφουν αδιάκοπα false, έτσι ο κώδικας που διακλαδώνει βάσει τους για να διακρίνει τις κατηγορίες τιμών XMP παίρνει πάντα τη διαδρομή «false».

Χρησιμοποιήστε τους υλοποιημένους ελέγχους αντίγια — IsString(), IsInteger(), IsDouble(), IsArray() — ή καλέστε απευθείας τον αντίστοιχο accessor (ToStringValue(), ToInteger(), ToDouble(), ToArray()) όταν ο τύπος της τιμής είναι ήδη γνωστός από το περιβάλλον. Ένας μικρός αριθμός χαμηλού επιπέδου εσωτερικών τύπων (BitmapInfo’s default constructor, και των εσωτερικών τύπων Encoding και Value που χρησιμοποιούνται από το μοντέλο αντικειμένων PDF) περιέχουν επίσης σώματα σκελετών που δεν εκτελούνται από τον τυπικό κώδικα επεξεργασίας εγγράφων.

Δείτε επίσης

 Ελληνικά