Troubleshooting
Build mislukt met C++20-fouten
Aspose.PDF FOSS for C++ vereist een C++20-compiler — clang 16+, gcc 13+, of MSVC 2022 17.5+. Als je build faalt met fouten zoals “designated initializers only allowed in C++20” of “concepts require ‘-std=c++20’”, compileert het consumerende project niet met de C++20-standaard ingeschakeld.
Stel de standaard expliciet in voordat je de bibliotheek als subdirectory toevoegt:
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)Op de opdrachtregel komt dit overeen met -std=c++20 (clang/gcc) of /std:c++20 (MSVC).
CMake-configuratie mislukt — Versie te oud
Het project vereist CMake 3.22 of hoger. Het uitvoeren van een oudere CMake geeft een fout die lijkt op:
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.22 or higher is required. You are running version 3.16.3Controleer je geïnstalleerde versie en upgrade in plaats van de meegeleverde CMakeLists.txt te bewerken:
cmake --versionInstalleer een actuele release van cmake.org of uw pakketbeheerder — de minimale versie weerspiegelt de generator- en taalfeatures die de build daadwerkelijk gebruikt, niet een willekeurige ondergrens.
FetchContent kan de repository niet downloaden
Als u de bibliotheek vendor met FetchContent in plaats van een handmatige add_subdirectory, zijn fouten tijdens de configuratie meestal een netwerkprobleem en niet een CMake-probleem:
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 voert git clone uit tijdens de CMake-configuratie. Achter een bedrijfsproxy of -firewall, of op een air-gapped CI-runner, mislukt dit met Failed to clone repository. Om dit op te lossen:
- Stel
HTTPS_PROXY/HTTP_PROXYin voor de CMake-configuratiestap, of - Clone de repository vooraf één keer en wijs
FETCHCONTENT_SOURCE_DIR_ASPOSE_PDF_FOSSnaar de lokale checkout zodatFetchContentdeze hergebruikt in plaats van via het netwerk op te halen, of - Vendor de brondirect en gebruik
add_subdirectory(), die geen netwerkafhankelijkheid heeft tijdens de configuratie.
Ongedefinieerde referentie / Onopgelost extern symbool tijdens het linken
Compilatie slaagt, maar linken mislukt met undefined reference to Aspose::Pdf::Document::... (gcc/clang) of een unresolved external symbol fout (MSVC). Dit is bijna altijd een van twee oorzaken:
- Ontbrekende linkstap —
target_link_libraries(your_app PRIVATE aspose_pdf_foss)ontbreekt of is verkeerd gespeld.add_subdirectory()alleen maakt de headers zichtbaar; het linkt de statische bibliotheek niet. - Runtime-bibliotheek / build-type mismatch op MSVC — een koppeling
Release-gebouwdaspose_pdf_foss.libnaar eenDebuguitvoerbaar bestand (of omgekeerd) mengt incompatibele C-runtimebibliotheken en faalt metLNK2038mismatchen. Bouw de bibliotheek en uw applicatie met dezelfdeCMAKE_BUILD_TYPE(of dezelfde/MD//MDdruntime-bibliotheekinstelling).
XMP-metadata typecontroles geven altijd false terug
XmpValue — het waardetype dat wordt geretourneerd door Document.Metadata() items — biedt type-checking hulpprogramma’s IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues() en IsStructure(). In de huidige release zijn deze zes methoden stubs die onvoorwaardelijk false retourneren, zodat code die op hen vertakt om XMP-waarde-soorten te onderscheiden altijd het “false”-pad volgt.
Gebruik in plaats daarvan de geïmplementeerde controles — IsString(), IsInteger(), IsDouble(), IsArray() — of roep de overeenkomstige accessor (ToStringValue(), ToInteger(), ToDouble(), ToArray()) direct aan wanneer het type van de waarde al bekend is uit de context. Een klein aantal low-level interne types (BitmapInfo’s default constructor, en de interne Encoding en Value types die door het PDF-objectmodel worden gebruikt) bevatten ook stub-lichamen die niet worden aangeroepen door typische documentverwerkingscode.