Troubleshooting
बिल्ड C++20 त्रुटियों के कारण विफल होता है
Aspose.PDF FOSS for 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 रिपोजिटरी को डाउनलोड करने में विफल रहता है
यदि आप लाइब्रेरी को मैनुअल add_subdirectory के बजाय FetchContent के साथ वेंडर करते हैं, तो कॉन्फ़िगर-टाइम विफलताएँ आमतौर पर नेटवर्क समस्या होती हैं, न कि 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 CMake कॉन्फ़िगरेशन के दौरान git clone चलाता है। कॉरपोरेट प्रॉक्सी या फ़ायरवॉल के पीछे, या एयर-गैप्ड CI रनर पर, यह Failed to clone repository के साथ विफल हो जाता है। इसे ठीक करने के लिए:
- CMake कॉन्फ़िगर चरण के लिए
HTTPS_PROXY/HTTP_PROXYसेट करें, या - रिपोजिटरी को एक बार पहले क्लोन करें और
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के साथ विफल हो जाता हैLNK2038मिसमैच। लाइब्रेरी और आपका अनुप्रयोग समानCMAKE_BUILD_TYPE(या समान/MD//MDdरनटाइम लाइब्रेरी सेटिंग)。
XMP मेटाडाटा टाइप चेक्स हमेशा फ़ॉल्स लौटाते हैं
XmpValue — Document.Metadata() एंट्रीज़ से लौटाए गए वैल्यू टाइप — टाइप-चेकिंग हेल्पर IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues(), और IsStructure() को उजागर करता है। वर्तमान रिलीज़ में ये छह मेथड स्टब्स हैं जो निरपेक्ष रूप से false लौटाते हैं, इसलिए कोड जो XMP वैल्यू प्रकारों को अलग करने के लिए इन पर शाखा बनाता है हमेशा “false” पाथ लेता है।
इसके बजाय लागू किए गए चेक्स का उपयोग करें — IsString(), IsInteger(), IsDouble(), IsArray() — या जब वैल्यू का प्रकार पहले से संदर्भ से ज्ञात हो तो मिलते-जुलते एक्सेसर (ToStringValue(), ToInteger(), ToDouble(), ToArray()) को सीधे कॉल करें। कुछ कम संख्या में लो-लेवल आंतरिक प्रकार (BitmapInfo का डिफ़ॉल्ट कंस्ट्रक्टर, और PDF ऑब्जेक्ट मॉडल द्वारा उपयोग किए गए आंतरिक Encoding और Value प्रकार) भी स्टब बॉडीज रखते हैं जो सामान्य दस्तावेज़-प्रोसेसिंग कोड द्वारा उपयोग नहीं किए जाते।