Troubleshooting

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.3

Controleer je geïnstalleerde versie en upgrade in plaats van de meegeleverde CMakeLists.txt te bewerken:

cmake --version

Installeer 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_PROXY in voor de CMake-configuratiestap, of
  • Clone de repository vooraf één keer en wijs FETCHCONTENT_SOURCE_DIR_ASPOSE_PDF_FOSS naar de lokale checkout zodat FetchContent deze 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:

  1. 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.
  2. Runtime-bibliotheek / build-type mismatch op MSVC — een koppeling Release-gebouwd aspose_pdf_foss.lib naar een Debug uitvoerbaar bestand (of omgekeerd) mengt incompatibele C-runtimebibliotheken en faalt met LNK2038 mismatchen. Bouw de bibliotheek en uw applicatie met dezelfde CMAKE_BUILD_TYPE (of dezelfde /MD//MDd runtime-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.

Zie ook

 Nederlands