Troubleshooting

Troubleshooting

Derleme, C++20 Hatalarıyla Başarısız Oluyor

Aspose.PDF FOSS for C++ bir C++20 derleyicisi gerektirir — clang 16+, gcc 13+ veya MSVC 2022 17.5+. Derlemeniz “designated initializers only allowed in C++20” veya “concepts require ‘-std=c++20’” gibi hatalarla başarısız oluyorsa, tüketen proje C++20 standardını etkinleştirmeden derleniyor demektir.

Kütüphaneyi bir alt dizin olarak eklemeden önce standardı açıkça ayarlayın:

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)

Komut satırında bu, -std=c++20 (clang/gcc) veya /std:c++20 (MSVC) anlamına gelir.

CMake Yapılandırması Başarısız — Sürüm Çok Eski

Proje CMake 3.22 veya daha yenisini gerektirir. Daha eski bir CMake çalıştırdığınızda aşağıdaki gibi bir hata ortaya çıkar:

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

Yüklü sürümünüzü kontrol edin ve satıcıdan gelen CMakeLists.txt‘ı düzenlemek yerine yükseltin:

cmake --version

Mevcut bir sürümü şuradan kurun cmake.org veya paket yöneticiniz — minimum sürüm, derlemenin gerçekte kullandığı jeneratör ve dil özelliklerini yansıtır, rastgele bir alt sınır değildir.

FetchContent Depoyu İndiremiyor

Kütüphaneyi FetchContent ile, manuel bir add_subdirectory yerine vendor ederseniz, yapılandırma zamanındaki hatalar genellikle bir CMake sorunu yerine ağ problemi olur:

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, CMake yapılandırması sırasında git clone çalıştırır. Kurumsal bir proxy ya da güvenlik duvarının arkasında, ya da ağ bağlantısı olmayan bir CI çalıştırıcısında, bu Failed to clone repository hatasıyla başarısız olur. Düzeltmek için:

  • CMake yapılandırma adımı için HTTPS_PROXY/HTTP_PROXY ayarlayın, ya da
  • Depoyu bir kez önceden klonlayın ve FETCHCONTENT_SOURCE_DIR_ASPOSE_PDF_FOSS‘ı yerel çekime yönlendirin, böylece FetchContent ağ üzerinden indirmek yerine onu yeniden kullanır, ya da
  • Kaynağı doğrudan vendor edin ve add_subdirectory()‘ı kullanın; bu, yapılandırma zamanında ağ bağımlılığı içermez.

Bağlantı Zamanında Tanımsız Referans / Çözülmemiş Dış Sembol

Derleme başarılı olur ancak bağlama undefined reference to Aspose::Pdf::Document::... (gcc/clang) veya bir unresolved external symbol hatası (MSVC) ile başarısız olur. Bu neredeyse her zaman iki nedenden biridir:

  1. Eksik bağlama adımı — target_link_libraries(your_app PRIVATE aspose_pdf_foss) eksik ya da hatalı yazılmış. add_subdirectory() tek başına yalnızca başlık dosyalarını görünür kılar; statik kütüphaneyi bağlamaz.
  2. MSVC’de çalışma zamanı kitaplığı / derleme türü uyuşmazlığı — bağlarken bir Release-derlenmiş aspose_pdf_foss.lib bir Debug çalıştırılabilir (veya tersine) uyumsuz C çalışma zamanı kitaplıklarını karıştırır ve şu hatayla başarısız olur LNK2038 eşleşmemeler. Kütüphaneyi ve uygulamanızı aynı CMAKE_BUILD_TYPE (ya da aynı /MD//MDd çalışma zamanı kitaplığı ayarı).

XMP Metadata Tür Kontrolleri Her Zaman False Döner

XmpValue — Document.Metadata() girişlerinden dönen değer türü — IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues() ve IsStructure() tip-kontrol yardımcılarını ortaya çıkarır. Mevcut sürümde bu altı yöntem, koşulsuz olarak false dönen stub’lardır, bu nedenle XMP değer türlerini ayırt etmek için bunlara göre dallanan kod her zaman “false” yolunu izler.

Bunun yerine uygulanmış kontrolleri kullanın — IsString(), IsInteger(), IsDouble(), IsArray() — veya değerin türü bağlamdan zaten biliniyorsa eşleşen erişiciyi (ToStringValue(), ToInteger(), ToDouble(), ToArray()) doğrudan çağırın. Az sayıda düşük seviyeli iç tip (BitmapInfo‘ın varsayılan yapıcı fonksiyonu ve PDF nesne modeli tarafından kullanılan iç Encoding ve Value tipleri) ayrıca tipik belge işleme kodu tarafından kullanılmayan stub gövdeler içerir.

Ayrıca Bakınız

 Türkçe