سؤال

هل من الممكن تعيين ملف المورد كيو تي في؟

وعلى سبيل المثال:

QFile file(resource_name);
file.open(QIODevice::ReadOnly);

uchar* ptr = file.map(0, file.size());

وعندما أحاول هذا، <م> PTR == 0 ، مشيرا إلى وجود خطأ.
أنه يعمل بشكل جيد إذا حاولت تعيين ملف منتظم.

وأنا على تشغيل كيو تي في لينكس، الذي يدعم QFile::Map.

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

المحلول

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

والدعوة file.size () سيعود الفعلي وحجم برنامج الأمم المتحدة للضغط من الملف الأصلي. ومع ذلك، يتم ضغط الموارد جزءا لا يتجزأ من وهو الأكثر احتمالا حجم مختلف. وfile.map (0، file.size ()) بإرجاع خطأ منذ حجم تمريرها إلى الخريطة () أكبر من الموارد التي يجري تعيينها. حتى إذا كنت تمر الحجم الصحيح لخريطة ()، أو حجم أصغر، فإن الذاكرة تحتوي على البيانات المضغوطة، وليس البيانات مضغوطة الامم المتحدة.

والحل هو عدم ضغط الموارد المضمنة. ويمكن تحقيق ذلك عن طريق إضافة:

QMAKE_RESOURCE_FLAGS += -no-compress  

لملف مشروع كيو تي الخاص بك. انظر هنا لشرح QMAKE_RESOURCE_FLAGS.

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