এটি একটি রানটাইম ত্রুটি যা দ্বারা সৃষ্ট Dynamic Linker
dyld: Library not loaded: @rpath/...
...
Reason: image not found
ত্রুটি Library not loadedসঙ্গে @rpathইঙ্গিত করে যে Dynamic Linkerবাইনারি খুঁজে পাচ্ছি না।
গতিশীল কাঠামোটি যুক্ত হয়েছিল কিনা তা পরীক্ষা করুন General -> Embedded Binaries
@rpathভোক্তা (অ্যাপ্লিকেশন) এবং প্রযোজক (গতিশীল কাঠামো) এর মধ্যে সেটআপ পরীক্ষা করুন :
- গতিশীল কাঠামো:
Build Settings -> Dynamic Library Install Name
- অ্যাপ্লিকেশন:
Build Settings -> Runpath Search Paths
Build Phases -> Embed Frameworks -> Destination, Subpath
গতিশীল লিঙ্কার
Dynamic Library Install Name(LD_DYLIB_INSTALL_NAME)যা ব্যবহার loadable bundle( Dynamic frameworkডেরাইভেটিভ হিসাবে) ব্যবহৃত হয় যেখানে dyldখেলায় আসে
Dynamic Library Install Name- বাইনারি ফাইলের পথে (না ফ্রেমওয়ার্ক)। হ্যাঁ, তারা একই নামের আছে, কিন্তু MyFramework.frameworkএকটি হল packaged bundleসঙ্গে MyFrameworkবাইনারি ফাইল এবং সম্পদ ভিতরে।
ডিরেক্টরিতে এই পথ পূর্ণ অথবা আপেক্ষিক হতে পারে (যেমন @executable_path, @loader_path, @rpath)। আপেক্ষিক পথটি আরও বেশি পছন্দনীয় কারণ এটি একটি নোঙ্গরের সাথে একসাথে পরিবর্তিত হয়েছিল যা যখন আপনি আপনার বান্ডেলটিকে একক ডিরেক্টরি হিসাবে বিতরণ করেন তখন কার্যকর হয়

পরম পাথ - ফ্রেমওয়ার্ক 1 উদাহরণ
//Framework1 Dynamic Library Install Name
/some_path/Framework1.framework/subfolder1
@executable_path
@ ক্ষরণযোগ্য_পথ - এন্ট্রি বাইনারি সম্পর্কিত - ফ্রেমওয়ার্ক 2 উদাহরণ
ব্যবহারের ক্ষেত্রে: Dynamic frameworkএকটি অ্যাপ্লিকেশনটিতে এম্বেড করুন
//Application bundle(`.app` package) absolute path
/some_path/Application.аpp
//Application binary absolute path
/some_path/Application.аpp/subfolder1
//Framework2 binary absolute path
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1
//Framework2 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1
//Framework2 Dynamic Library Install Name
@executable_path/../Frameworks/Framework2.framework/subfolder1
//Framework2 binary resolved absolute path by dyld
/some_path/Application.аpp/subfolder1/../Frameworks/Framework2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1
@loader_path
@ লোডার_পাথ - এই বাইনারি
ব্যবহারের মামলার মালিক বান্ডিলের সাথে সম্পর্কিত: এম্বেডড ফ্রেমওয়ার্ক সহ ফ্রেমওয়ার্ক - ফ্রেমওয়ার্ক 3 এর ভিতরে ফ্রেমওয়ার্ক 3_1
//Framework3_1 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1
//Framework3_2 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/Frameworks/Framework3_2.framework/subfolder1
//Framework3_1 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1
//Framework3_1 @loader_path == Framework3_1 @executable_path
/some_path/Application.аpp/subfolder1
//Framework3_2 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1
//Framework3_2 @loader_path == Framework3_1 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1
//Framework3_2 Dynamic Library Install Name
@loader_path/../Frameworks/Framework3_2.framework/subfolder1
//Framework3_2 binary resolved absolute path by dyld
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1/../Frameworks/Framework3_2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework3_1.framework/Frameworks/Framework3_2.framework/subfolder1
@rpath - রানপথ অনুসন্ধানের পথ
ফ্রেমওয়ার্ক 2 উদাহরণ
পূর্বে ডিল্ডের সাথে কাজ করার জন্য আমাদের একটি ফ্রেমওয়ার্ক সেটআপ করতে হয়েছিল। এটি সুবিধাজনক নয় কারণ একই ফ্রেমওয়ার্কটি অন্য কোনও কনফিগারেশনের সাথে ব্যবহার করা যায় না
@rpath বাইরের (অ্যাপ্লিকেশন) এবং নেস্টেড (ডায়নামিক ফ্রেমওয়ার্ক) অংশগুলির উপর নির্ভর করে এমন একটি যৌগিক ধারণা:
অ্যাপ্লিকেশন:
গতিশীল ফ্রেমওয়ার্ক:
//Application Runpath Search Paths
@executable_path/../Frameworks
//Framework2 Dynamic Library Install Name
@rpath/Framework2.framework/subfolder1
//Framework2 binary resolved absolute path by dyld
//Framework2 @rpath is replaced by each element of Application Runpath Search Paths
@executable_path/../Frameworks/Framework2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1
* ../- বর্তমান ডিরেক্টরিটির পিতামাতার কাছে যান
otool - অবজেক্ট ফাইল প্রদর্শনের সরঞ্জাম
//-L print shared libraries used
//Application otool -L
@rpath/Framework2.framework/subfolder1/Framework2
//Framework2 otool -L
@rpath/Framework2.framework/subfolder1/Framework2
//-l print the load commands
//Application otool -l
LC_LOAD_DYLIB
@rpath/Framework2.framework/subfolder1/Framework2
LC_RPATH
@executable_path/../Frameworks
//Framework2 otool -l
LC_ID_DYLIB
@rpath/Framework2.framework/subfolder1/Framework2
install_name_tool গতিশীল ভাগ করে নেওয়া লাইব্রেরি ইনস্টল নাম ব্যবহার করে পরিবর্তন করুন -rpath
CocoaPodsনিয়ন্ত্রণ করতে use_frameworks![সম্পর্কে] ব্যবহার করে aDynamic Linker
[শব্দভাণ্ডার]
Link Binary with Librariesআনে এবং এগুলিতে ফেলে দেওয়া যায় এবং কোনওভাবে এক্সকোড সেগুলি আপনার অ্যাপ্লিকেশন বান্ডেলে অনুলিপি করতে জানে, অন্যদিকে কাস্টম ফ্রেমওয়ার্কগুলির জন্য এটি সাধারণত ঘটে না।