في هذا الفيديو ، سنتحدث عن أخطاء الرابط ولماذا يمكن أن تحدث.
تحدث أخطاء الرابط عندما يحاول الرابط تجميع كل أجزاء البرنامج معًا لإنشاء
ملف تنفيذي وتكون قطعة واحدة أو أكثر مفقودة.
عادة ، يمكن أن يحدث هذا عندما يتعذر على الرابط العثور على ملف كائن أو مكتبات.
يمكن أن يكون إصلاح أخطاء الرابط أمرًا صعبًا.
في بعض الأحيان يكون الأمر مجرد الحصول على المسارات الصحيحة بحيث يعرف الرابط مكان
القطع المفقودة.
دعنا ننتقل إلى رمز الضوء وسنقوم بإجبار البرنامج على وجود خطأ رابط حتى تتمكن من
رؤية شكل رسالة الخطأ.
رمز المثال هنا ، يرجى تجاهل بناء الجملة.
هذا هو في الواقع C plus code ، لكنه لا يزال وثيق الصلة بأخطاء الرابط.
لا تقلق بشأن البث المباشر.
لا تقلق بشأن stdcout.
الفكرة الرئيسية هنا هي أن أخطاء الارتباط هي نفسها في C و C plus plus.
ومثال الترميز هنا يحاول فقط توضيح خطأ رابط مرة أخرى.
لذلك أنا في ضوء الكود وأنشأت مشروعًا يسمى Linker Error استنادًا إلى النموذج الذي نستخدمه.
لذلك كل ما لدي هو رئيسي. cpp مكتوب عليه Hello world.
الآن سنقوم بفرض خطأ رابط هنا.
هذا ليس شيئًا تريد القيام به بشكل طبيعي ، لكنني أريد أن أفعله لأظهر لك كيف يبدو
الخطأ.
إذن ما سأقوله هو أنني سأقول خارجيًا أو دعنا نقول فقط X وسأشرح لك كل هذا في غضون
ثانية فقط.
ثم في النص الرئيسي ، أريد أن أحاول استخدام ذلك X هناك.
إنه مجرد عدد صحيح ودعنا نقول أنني أريد طباعته.
أريد فقط طباعة X ، بهذه البساطة.
سأقوم بحفظ هذا.
الآن سترى إذا قمت بتجميع هذا البرنامج ، فسترى ما سيحدث.
أنا ذاهب إلى حق انقر فوق تجميع.
أحصل على تجميع نظيف.
لا حرج في البرنامج ، لكن عندما أحاول إنشاءه وتشغيله.
تستطيع أن ترى خطأ رابط.
هذا خطأ رابط كلاسيكي.
إشارة غير محددة إلى شيء ما.
في هذه الحالة ، يحدث أن تكون x.
أيضًا ، ستلاحظ أن الرابط أعاد واحدًا هنا.
تعيد LD واحدة وهي حالة الخروج.
لذلك كان هناك خطأ ما في الرابط.
من الواضح أن المترجم كان جيدًا لأننا لم نحصل على أخطاء في المترجم.
نحن نفعل ذلك مرة أخرى.
هناك التجميع.
لا أخطاء ولا تحذيرات.
لذا اسمحوا لي أن أشرح لكم ما يحدث هنا.
اسمحوا لي أن أمسك قلمي هنا بسرعة حقيقية.
وما يحدث هنا هو أنني حصلت على ملف CPP الرئيسي الخاص بي هنا وسيتم تجميعه إلى النقطة الرئيسية صفر ، دعنا نقول ، أو
كائن النقطة الرئيسي.
هنا لدينا إشارة إلى EXE.
يمكنك رؤيتها هناك.
يمكنك رؤيته هناك.
لدي هنا إشارة إلى exe ، والتي سأستخدمها.
الآن لدينا أيضًا مكتبات دفق O الخاصة بنا ، لذلك يحتاج الرابط إلى الاستيلاء على هذه المكتبات وسأقوم فقط
بكتابة i o stream هنا حتى تعرف ما أتحدث عنه.
يحتاج الرابط إلى وضع هذين معًا لإنشاء ملف exe الرئيسي.
أو في هذه الحالة أعتقد أنه سيكون خطأ رابط exe.
لكنك تعرف ما أعنيه.
لذلك فإن التجميع على ما يرام.
لقد أنشأنا ملف الكائن الخاص بنا.
هذه المكتبة موجودة.
المشكلة هي أنني أخبرت المترجم هنا أن هذا x ليس بداخلي.
إنه مكان آخر.
تم تعريفه من قبل شخص آخر.
حسنًا ، من الواضح أنه لم يتم تعريفه من قبل شخص آخر لأن هذا النوع من فرض المشكلة هنا.
لذا يحتاج الرابط الآن إلى حل هذا X ، إنه يقول ، حسنًا ، من أين يمكنني الحصول على هذه القيمة للطباعة؟
لأن هذا ما طلبت مني أن أفعله هنا ، أليس كذلك؟
أريده أن يطبع قيمة x.
أين س؟
لا يمكن العثور عليه.
هذا هو خطأ الرابط.
هذا بالضبط ما يحدث.
واسمحوا لي ببناء هذا مرة أخرى حتى تتمكن من رؤية رسالة الخطأ مرة أخرى.
إنه يبنيه ويديره.
وهناك رسالة الخطأ.
تقول إشارة غير محددة إلى X.
يمكنك أن ترى بالضبط ما يحدث.
لا يمكن العثور على X.
الآن ، هذا ليس خطأ المترجم.
هذا خطأ رابط.
من المهم حقًا فهم ذلك.
من الصعب إصلاح أخطاء الرابط.
في كثير من الأحيان تكون الملفات التي تحتاج إلى الارتباط مفقودة.
إنهم في الأماكن الخطأ.
لا داعي للقلق بشأن استخدام ضوء الكود في هذه الدورة ، فسنقوم بكل شيء
بأنفسنا.
ولكن إذا كنت تستخدم مكتبات من جهات خارجية ، فهذا هو الشيء الذي سنتحدث عنه في دورة تدريبية
أكثر تقدمًا أو متوسطة.
لكنني أردت فقط أن أوضح لك أخطاء الرابط في حال توصلت إلى واحدة ، قم بنشرها في المنتدى
وسنعمل من خلالها معًا.