الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ظهور خطأ في البرنامج بعد ان كان سليم .. ارجو المساعده

بدأه ahla elm في 2 مارس 2010 · 12 رد · 1,680 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

لو سمحتوا من فضلكم ممكن تساعدوني في نقطه بسيطه

انا عملت برنامج اكساء وكان سليم جدا

ولكن بعد فتره عندما اعمل رن لبرنامج الاكساء يطلع خطأ

ولكن باقي البرامج التي لا يوجد فيها اكساء تكون سليمه

وهذا هو الخطأ الذي يظهر لي في البرنامج

qvepfmbzf0y2.jpg

uepr0bw7bg20.jpg

ياريت توضحولي سبب الخطأ .. وماهو حله

------------

وابغى اسألكم سؤال آخر من فضلك

عندما استخدم مكتبه gluax

هل يتطلب مني ان اضيف ملف glaux.h

في ملف gl.. بداخل ملف include ؟

ام انه ملف glaux.h يتواجد تلقائي ؟

ارجو المساعده العاجل ان امكن

وجزاكم الله عنا كل خير

تم تعديل هذه المشاركة بواسطة ahla elm في 2 مارس 2010 في 20:19

#2

وعليكم السلام ورحمة الله وبركاته .

هناك احتمال أن البرنامج لايتمكن من العثور على الصورة ، قد يكون بسبب :

1- أنك تحاولين تشغيل التطبيق مباشرة من المجلد Debug مثلاً ، بينما كنت في السابق ، تنفيذين الملف من داخل الفيجوال ستوديو ، جربي كلا الطريقتين .

القصة ، هي في أنه وعند تنفيذ التطبيق من داخل الفيجوال ستوديو مثلاً ، فإن Relative Path ، يختلف عن تنفيذ الملف من داخل المجلد Debug .. ولكن لو كان في مسار ثابت مثلاً :

C:\\image.bmp

فمن المفترض أنه لاتوجد مشكلة .

أرفقي المشروع كامل، اذا لم تنحل المشكلة .

--

الملف
glaux ، يوجد مع الفيجوال ستوديو بشكل افتراضي ، داخل مجلد gl ، ولكن قرأت
أنه سيتم الاستغناء عنه ، ولكنه موجود حتى النسخة Visual Studio 2008 ولا أعرف عن النسخة الجديدة 2010 . أما اذا كنت تستخدمين Codeblocks مثلاً ، فهو لا يحوي على هذه المكتبة بشكل افتراضي .يمكن استخدام مكتبات اخرى للصور مثل DevIL أو FreeImage

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

مشكووور استاذنا الشمري

الله يجزاك كل خير

ولكن لم افهم النقطة الاولى التي ذكرتها .. ياريت توضحلي اكتر اذا امكن

وبخصوص النقطه الثانيه التي ذكرتها وهي

الملف glaux ، يوجد مع الفيجوال ستوديو بشكل افتراضي ، داخل مجلد gl ، ولكن قرأت أنه سيتم الاستغناء عنه ، ولكنه موجود حتى النسخة Visual Studio 2008

اريد ان اوضح لك بأن نظام التشغيل لدي windows 7 .. ولم اجد ملف glaux في مجلد gl ، بالرغم من ان النسخه فيجوال استوديو 2008

بالرغم انه كان يظهر تلقائي عندما كان نظام التشغيل لدي ويندوز اكس بي سابقاً

ياريت توصح لي من فضلك

وجزاك الله عنا كل خير

تم تعديل هذه المشاركة بواسطة ahla elm في 2 مارس 2010 في 23:33

#4

بالنسبة للسؤال الأول :

تأكدي أن الصورة موجودة في نفس المجلد مع التطبيق ( اجعلي نسخة من الصورة موجودة دائماً مع التطبيق بنفس المجلد ) ، وسيعمل ان شاء الله .

السؤال الثاني :

بحثت الان عن المكتبة glaux ، و وجدت الملف glaux.lib ولم أجد الملف الرأسي ،

للمزيد :

http://social.msdn.m...88-0c131008b08f

عموماً الأمر بسيط ، يمكن الحصول عليها من أي مكان ، والملف الرأسي بالمرفقات ، يمكن نسخه الى المجلد gl .

بالتوفيق

GLAUX.zip

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

الصوره متواجده في نفس مكان ملف البرنامج ..

وايضا يتواجد لدي ملف المكتبه glaux في vC2008 ..

ولكن عندما اضغط على start Debugging حتى احصل على مخرج البرنامج .. يظهر لي الخطأ الموضح لك استاذ الشمري

972796449.jpg

احب ان انوه لك ان هذا الخطأ يظهر لي عندما اطبق برنامج الاكساء على visual studio 2008

ولكن عندما اطبقه على visual c ++ 6 لا يظهر خطأ على الاطلاق

ارجو الحل من فضلكم

تم تعديل هذه المشاركة بواسطة ahla elm في 3 مارس 2010 في 18:14

#6

استبدلي هذا السطر /

TextureImage = auxDIBImageLoad(FileName) ;

بهذا /

TextureImage = auxRGBImageLoadA(FileName) ;

السبب هو أن الفيجوال سي 2008 يفرض ان البارمترات النصية ( التابعة لـ Win32 APIs ) هي من نوع يونيكود ،

يمكن تغيير ذلك من خلال اعدادات المشروع لو لم يرغب المبرمج في هذه القيمة الافتراضية . أو أنه لايريد تعديل الكود .

Alt + F7

post-42837-1267633969041_thumb.jpg

تم تعديل هذه المشاركة بواسطة الشمري في 4 مارس 2010 في 07:13

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#7

مشكووووووووور استاذنا الشمري على الرد الاكتر من رائع

ماشالله عليك .. فعلا انت مكسب للعلم ..

الله يوفقك ويحفظك من كل مكروه ..

اود ان اخبرك انني طبقت كل اللي قلت عليه

ولكن ظهر لي خطأ وهو انه

fatal error LNK1104: cannot open file 'glaux.lib

بالرغم من اني كاتبه في بدايه البرنامج

# pragma comment (lib, "glaux.lib")

لماذا يظهر لي هذا الخطأ ؟

تم تعديل هذه المشاركة بواسطة ahla elm في 3 مارس 2010 في 19:51

#8

الخطأ الثاني هو لأنك لا تملكين المكتبة glaux .

أنا لا أملكها أيضاً .

وبحثت عنها في الانترنت ولم أجدها .

عموماً ، ابحثي داخل مجلد Visual C++ 6 عن الملف glaux.lib

واذا وجدتيه انسخيه وألصقيه داخل مجلد المكتبات lib الموجود في هذا المسار ( من أجل أن يعمل مع Visual c++ 2008 طبعاً ) :

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib

والمسار سيختلف عندك .. ممكن تلاقينه في D أو E .. أو حسب مكان التثبيت لديك .

الفكرة أنك تضعين المكتبة في مكان ممكن يعثر عليها المترجم .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#9

اهلا استاذنا الشمري

شكرا على توضيحك

ولكن لدي استفسار من فضلك

مالفرق بين

الداله

TextureImage = auxDIBImageLoad(FileName) ;

وبين الداله بإضافة حرف A

TextureImage = auxDIBImageLoadA(FileName) ;

ياريت توضحلي بالتفصيل اذا امكن

وشكرااااااا

#10

القصة طويلة ،

هناك أكثر من ترميز للنصوص ،

الترميز المشهور هو الأسكي : حيث كل حرف يمكن تمثيله بـ : بايت واحد فقط . وتعرفين أن البايت يتكون من 8 بت ، أي 255 حرف ، وبالتالي عدد الحروف التي يمكن تمثيلها قليل .

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

ويندوز ظهرت قبل أن ينتشر ( أو يظهر ) ترميز اليونيكود ، وبالتالي النسخ القديمة لم تكن تدعم هذا الترميز الجديد ، وعندما أرادت ويندوز تدعم الترميز الجديد ، أنشأت نسختين من كل دالة ( الدوال التي تتعامل مع النصوص ) ، حتى تضمن التوافق مع النسخ القديمة ، هكذا :

AUX_RGBImageRec * APIENTRY auxDIBImageLoadA(LPCSTR);
AUX_RGBImageRec * APIENTRY auxDIBImageLoadW(LPCWSTR);

ستلاحظين ان الاختلاف فقط في نوع البارمترات ، حيث الأولى تستقبل النوع char والثانية unsigned short :

typedef __nullterminated CONST CHAR *LPCSTR, *PCSTR;
typedef __nullterminated CONST WCHAR *LPCWSTR, *PCWSTR;

وبالتالي اذا أردت استخدام الدالتين ، فيمكن كتابة :

 TextureImage = auxDIBImageLoadA("image.bmp") ; // ASCII
 TextureImage = auxDIBImageLoadW(L"image.bmp") ;// Unicode

لكن الان لايوجد توافق مع النسخ القديمة ، فلو كان لديك برنامج بنسخة قديمة كالذي حدث معك ، فلن يعمل البرنامج ، لأنه لاتوجد دالة تنتهي بـ A أو W .

لذلك قامت ميكروسوفت ، بالالتفاف على هذه المشكلة عن طريق ما يعرف بـ Macro في السي بلس :

#ifdef UNICODE
#define auxDIBImageLoad auxDIBImageLoadW
#else
#define auxDIBImageLoad auxDIBImageLoadA
#endif

بالتالي ، لو جلبت برنامج قديم و حاولتي ترجمته من خلال الفيجوال سي بلس 2008 ، ولم يعمل ، فالحل هو بتغيير نوع النص الافتراضي ، كما في الصورة ، حتى تخبري المترجم أي دالة يستدعي ( التي تنتهي بـ A أو W ) :

post-42837-1267633969041.jpg

تم تعديل هذه المشاركة بواسطة الشمري في 9 مارس 2010 في 01:05

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#11

مشكور استاذنا الشمري على ردك الاكتر من رائع ..

اسأل الله ان يريح قلبك كما تتريح قلوبنا بشرحك القيم والهادف للمعلومات ..

جزاااااك الله عنا كل خير

وفي الاخير اود ان اسألك استاذي عن نقطه ما وهي:

كما نعلم ان الملف gluax يكون موجود تلقائي وبشكل افتراضي حتى النسخة Visual Studio 2008

سؤالي هوا .. لماذا عندما نصبت برنامج Visual Studio 2008 على نظام التشغيل windows7 لم اجد ملفات gluax بشكل افتراضي في الجهاز .. حيث انه كان من المفروض ان تكون متواجده بشكل تلقائي ؟

ولكن عندما نصبت Visual Studio 2008 على نظام التشغيل windows XP وجــــدت ملفات gluax بشكل تلقــــــائي

فهل نظام التشغيل له دور في عدم ظهور ملف gluax بشكل تلقائي ..

لو تكرمت استاذي اود ان توضح لي السبب ..

وجزاك الله خيرا ..

#12

ارجو الرد استاذي على سؤالي

#13

في الحقيقة لا علم لدي عن Windows 7 ولا عن سبب تصرف Visual Studio بهذه الطريقة .

لكن ما أعرفه أن GLAUX قديمة ، والمفروض أنها ستحذف تماماً .

هي مكتبة سيئة ، ولكن لبساطتها نستخدمها ..

لذلك النصيحة هي باستخدام مكتبات أخرى مثل DevIL Image Library أو أن تكتبي بنفسك دالة أو كلاس يقوم باستيراد صورة BMP وهي بسيطة ان شاء الله .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…