سؤال

وأنا حاليا على وضع برنامج في كيو تي ويستخدم libqextserialport.1.dylib المكتبة.

وأنا بنائه وتشغيله في رمز x و هو يبصق مرة أخرى:

dyld: Library not loaded: libqextserialport.1.dylib
    Referenced from: /Users/samuelreh/Desktop/QtOpenCV/build/Debug/QtOpenCV.app/Contents/MacOS/QtOpenCV
    Reason: image not found

وتقع المكتبة في / المستخدمين / samuelreh / سطح المكتب / QtOpenCV / qextserialport / بناء /.

لا أستطيع تشغيل برنامجي عن طريق تغيير إلى المجلد تنفيذ /Users/samuelreh/Desktop/QtOpenCV/build/Debug/QtOpenCV.app/Contents/MacOS/ ودخول:

وinstall_name_tool -change libqextserialport.1.dylib /Users/samuelreh/Desktop/QtOpenCV/qextserialport/build/libqextserialport.1.dylib QtOpenCV

وأنا أعلم أن هناك ربما العديد من الحلول وبالاضافة الى هذا. أحد يعرف أفضل / الأكثر أناقة / أسهل أن تفعل من رمز العاشر؟

هل كانت مفيدة؟

المحلول

إذا فهمت مشكلتك بشكل صحيح، التطبيق الخاص بك هو بناء على ما يرام، عدم وجود أخطاء عند ربط، ولكن عند محاولة إطلاقه المكتبة لا يمكن العثور عليه.

وهذا ليس مستغربا، لأن الملف dylib في بعض الدليل التعسفي ليس على مسار النظام. تحتاج إما لنسخه إلى /usr/lib (وربما ليست فكرة جيدة) أو إدراجه في حزمة التطبيق. هذا الأخير هو على الارجح أفضل نهج.

ولقد حاولت ذلك أبدا، ولكن يبدو أنك بحاجة إلى استخدام <لأ href = "http://developer.apple.com/DOCUMENTATION/DeveloperTools/Conceptual/XcodeBuildSystem/200-Build_Phases/bs_build_phases.html#// apple_ref / وثيقة / رمز المستخدم / TP40002690-CJAHHAJI "يختلط =" نوفولو noreferrer "> نسخ الملفات بناء المرحلة للوضع dylib داخل حزمة الخاص بك ثم <وأ href =" http://www.codeshorts.ca/2007 / نوفمبر / 01 / جعل النمر ربط-منقولة-مكتبات موفن "يختلط =" نوفولو noreferrer "> تكوين كسكودي بحيث قابل للتنفيذ الخاص بك وسوف تعرف أين يمكن العثور عليه.

نصائح أخرى

ولقد فعلت بالضبط فقط هذا، مع مشروع وحدة حزمة. ويتم إدراج هذا في مشروع أكبر مع تنفيذ منفصلة.

وأضفت "dylibs نسخة الى الأطر" الخطوة التي نسخ dylibs إلى /Foobar.bundle/Contents/Frameworks/Foobar/. ثم أضفت تشغيل سيناريو المرحلة لتشغيل كخطوة نهائية، لإصلاح تثبيت أسماء dylibs في تنفيذ:

install_name_tool -change libBobDylan.dylib @executable_path/../Plugins/Foobar.bundle/Contents/Frameworks/Foobar/libBobDylan.dylib path/to/build/product/Foobar.Bundle/Contents/MacOS/Foobar

وبطبيعة الحال، كما ترتبط libBobDylan.dylib إلى libBillyIdol.dylib. لذلك كان لي أن أضيف تشغيل سيناريو المرحلة أخرى في بداية جدا من الهدف لإصلاح تثبيت الأسماء هنا:

install_name_tool -change libBillyIdol.dylib @executable_path/../Plugins/FooBar.bundle/Contents/Frameworks/Foobar/libBillyIdol.dylib local/path/to/libBobDylan.dylib

وكان لي أكثر من اثني عشر من هذه لربط ضد. كان لي لإقناع المورد من dylibs لوحة رأس قدرتها على استيعاب لي العديد من التغييرات install_name ...

وأنت فقط اسحب مكتبة من الدليل على مشروع Xcode، وأفضل في الموارد ولكن لا يهم (أعتقد). حاولت مع ودون التحقق من "نسخ الملفات إلى حزمة" ويعمل في كلتا الحالتين، ولست متأكدا إذا كنت بحاجة إلى إدراجه في حزمة للنشر.

ولقد اختبرت هذا مع sqlite3 وتطبيق الكاكاو (الكاكاو اللمس).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top