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). Αυτό είναι σχεδόν πάντα μία από τις δύο αιτίες:
- Λείπει βήμα σύνδεσης —
target_link_libraries(your_app PRIVATE aspose_pdf_foss)λείπει ή είναι γραμμένο λανθασμένα.add_subdirectory()μόνο από μόνο του κάνει ορατές τις κεφαλίδες· δεν συνδέει τη στατική βιβλιοθήκη. - Ασυμφωνία βιβλιοθήκης χρόνου εκτέλεσης / τύπου κατασκευής σε 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) περιέχουν επίσης σώματα σκελετών που δεν εκτελούνται από τον τυπικό κώδικα επεξεργασίας εγγράφων.