خطأ وقت التشغيل لتطبيق كيو تي على دائرة الرقابة الداخلية بنيت عبر كماك

StackOverflow https://stackoverflow.com//questions/25042916

  •  21-12-2019
  •  | 
  •  

سؤال

مرحبا ستاكوفيرفلورز :)

إذا كنت بناء مشروع عينة كت / كماك (في حالتي "ساعة تناظرية"مثال) ونشره على جهاز تشغيل دائرة الرقابة الداخلية 7.1 كل شيء يسير على نحو سلس:التطبيق ينفذ لا تشوبه شائبة على الجهاز.فاتحة - الناس من ديجيا قام بعمل هائل لدمج تولشين دائرة الرقابة الداخلية في سير العمل كيو تي بهم.

ومع ذلك ، إذا كنت ترجمة مشروع كماك إلى مشروع كماك ، الأمور لا تذهب على نحو سلس بعد الآن.لقد أرفقت المثال على مدار الساعة التناظرية من الإصدار كت-5.3.1 (انظر أدناه) حيث أضفت كماكليستس.تكست والنص الذي يدير كماك لتوليد مشروع كسكودي لدائرة الرقابة الداخلية.يجمع المشروع وحتى الروابط (اضطررت إلى إضافة بعض مكتبات الارتباط الإضافية ، راجع ملف مصدر كماك).ياي.

لكن ها هو الفخ:تعطل التطبيق في وقت التشغيل مع رسالة الخطأ التالية:

خطأ:فشل تحميل البرنامج المساعد منصة "دائرة الرقابة الداخلية"

كتعليق في هذا الدول موضوع واحد لديه ل" تحميل القوة " ليبقيوس عبر إعدادات المشروع.لم يؤدي القيام بذلك إلى تحسين الموقف كثيرا، بل أدى فقط إلى تغيير رسالة الخطأ إلى:

خطأ:كنت تقوم بإنشاء كابليكاتيون قبل استدعاء إيابليكاتيونمين.إذا كنت تكتب تطبيق دائرة الرقابة الداخلية الأصلي ، وتريد فقط لاستخدام كيو تي ل أجزاء من التطبيق ، مكان جيد لإنشاء التطبيق هو من الداخل 'أبليكاتيونديفينيشلونشينغ' داخل مندوب إيابليكاتيون الخاص بك.

لدي سؤالان:

  • هل لدى أي شخص فكرة ما هي المشكلة مع أخطاء وقت التشغيل?وأنا أعلم أن كماك (ودائرة الرقابة الداخلية مكبيكس المقابلة)تفعل بعض السحر.ولكن كيف تترجم ذلك إلى كماك?
  • لماذا لا بد لي من ربط عدة ليبس (هارفبوزنغ, قيوس, ليبنغ, والعديد من الأطر دائرة الرقابة الداخلية) يدويا إلى هدفي?لا يجب أن تجد_حزمة (كيو تي 5 ...) هل هذا العمل بالنسبة لي?

هنا هو الرابط إلى ملف مضغوط يحتوي على مشروع كيو تي-كماك.إصدار كيو تي أنا باستخدام هو كيو تي-5.3.1 لدائرة الرقابة الداخلية.

تحرير:اكتشفت أن عينة كماك لا يعمل تماما مثل هذا إذا كنت المسيل للدموع للخروج من هيكل المجلد أمثلة كيو تي.انظر إلى مثال كيو تي مباشرة:مسار / إلى / كيو تي / أمثلة / الحاجيات / الحاجيات / التناظرية.

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

المحلول

بعد بضع ساعات من الحفر حول وجدت طريقة كيفية إنشاء مشروع كماك لتطبيق كيو تي لدائرة الرقابة الداخلية.تلميحات رئيسية حصلت عبر جوجل وعن طريق التحقق من الإخراج التي تم إنشاؤها بواسطة كماك.لقد وجدت البرامج النصية التي تفعل في الواقع السحر كله وتطبيق أجزاء منه إلى مصادر كماك بلدي.

هذه هي الوصفة التي عملت بالنسبة لي.من أجل الاكتمال ، أضفت أيضا الخطوات التي كنت على علم بها بالفعل عندما نشرت السؤال أعلاه:

  • إدخال كماك إلى سلسلة أداة دائرة الرقابة الداخلية.انظر كماك / تولشين / دائرة الرقابة الداخلية.سلسلة الأدوات.كماك من مشروع عينة بلدي.فإنه يحدد عدة خصائص كماك ويبحث عن الأدوات والأطر اللازمة.(أنا لا أذكر بعد الآن حيث لدي هذا الملف من - ولكن يتم استخدامه في العديد من المشاريع الأخرى أيضا إذا كنت جوجل لذلك.) لديك لتمرير ملف الإعداد هذا كوسيطة ل كماك (انظر أدناه).

  • تعيين العديد من الخصائص المستهدفة للتنفيذ الخاص بك لتحويله إلى (دائرة الرقابة الداخلية) حزمة التطبيق.يجب أن تكون واضحة.لاحظ أن هناك قالب Info.plist.in سيتم الانتهاء من ذلك من قبل كماك.

  • إصلاح 1:ربط المكتبات والأطر المفقودة إلى التطبيق يدويا في كماك.لسبب ما, find_package(Qt5 ...) لا يرجع قائمة كاملة من التبعيات.من المحتمل جدا أن أفتقد شيئا هنا, على أية حال.

  • إصلاح 2:تأكد من فرض تحميل ليبقيوس من أجل تجنب رسالة الخطأ حول البرنامج المساعد دائرة الرقابة الداخلية في عداد المفقودين.في كماك:

    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -force_load ${YOUR_QT_ROOT_PATH}/plugins/platforms/libqios.a" )

  • إصلاح 3:إزالة مفتاح القصة المصورة في Info.plist.in.هذه الخطوة لا أفهمها بالتفصيل.كانت الوسائل مستوحاة من هذا نشر على ستاكوفيرفلو.

    <key>UIMainStoryboardFile</key> <string>main</string>

  • إصلاح 4:والآن الكرز على القمة:لدائرة الرقابة الداخلية لديك لإعادة تسمية الرئيسية () وظيفة مع المقابلة " ج " نسخة منسقة.على ما يبدو ، كيو تي يأتي مع انها الخاصة main نقطة الدخول وإعادة تسمية تلك التي كتبتها qtmn().يتم تنفيذ هذا السحر كماك من قبل هذا البرنامج النصي:your/qt/root/path/mkspecs/macx-ios-clang/rename_main.sh.لا أفهم الميكانيكا الكاملة وراء هذا بالتفصيل.في حالتي ، كنت على ما يرام مع إعادة تسمية توقيع وظيفة الرئيسي:

    // Replace... int main(int argc, char *argv[])

    // ... with this line: extern "C" int qtmn(int argc, char *argv[])

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

ملاحظة:افتراضات العمل هي أن الإصدار الصحيح من كسكودي (5.1.1 في حالتي) هو متاح وأنك تملك هوية توقيع صالحة (تغييره في كماكليستس.نص!).وعلاوة على ذلك ، في مشروع عينة بلدي (انظر أدناه) أفترض أوبينكف بنيت لدائرة الرقابة الداخلية هو متاح.أنا في حاجة إليها للتغلب على مشكلة رابط:كانت هناك بعض الأشياء المفقودة من ليبنغ التي يتم شحنها مع أوبينكف.

آمل أن يكون هذا مفيدا.

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