السلام عليكم
اريد ان اعمل مكتبة
مثلا <include<yassin.h#
تتضمن الدوال الاتية:
()initual
()round
()WritePixl
()close
عند كتابة برنامج اقوم باستدعاء المكتبة فقط
السلام عليكم
اريد ان اعمل مكتبة
مثلا <include<yassin.h#
تتضمن الدوال الاتية:
()initual
()round
()WritePixl
()close
عند كتابة برنامج اقوم باستدعاء المكتبة فقط
اكتب محتوى الملف "yassin.h" ليبدو كالتالي:
#ifndef YASSIN_H #define YASSIN_H void initual(); void round(); void WritePixl(); void close(); #endif // YASSIN_H
أكتب الملف "yassin.c" ليبدو كالتالي:
#include "yassin.h"
void initual()
{
// implement here
}
void round()
{
// implement here
}
void WritePixl()
{
// implement here
}
void close()
{
// implement here
}الخطوه التالية هي بإنشاء المكتبة و فى هذه الحالة ستحتاج لوجود نسختين احداهما للتنقيح و الأخرى مع تفعيل التحسينات و حيث أنى لا أعلم المترجم الخاص بك ساعطيك مثال لأشهر المترجمات:
// for Debug build gcc -g -c -Wall -Wfatal-errors yassin.c -o yassin.o clang -g -c -Wall -Wfatal-errors yassin.c -o yassin.o cl /c /Za /W4 /WX /Od /Z7 yassin.c /Fo.\yassin.obj icl /c /Za /W4 /WX /Od /Z7 yassin.c /Fo.\yassin.obj // for release build gcc -O3 -c -Wall -Wfatal-errors yassin.c -o yassin.o clang -O3 -c -Wall -Wfatal-errors yassin.c -o yassin.o cl /W4 /WX /Og yassin.c /Fo.\yassin.obj icl /W4 /WX /Og yassin.c /Fo.\yassin.obj
gcc هو مترجم gnu c.
clang هو مترجم clang c.
cl هو مترجم ++visual c.
icl هو مترجم ++intel c. لاحظ ان صيغة مترجم انتل تختلف من ويندوز لأى نظام أخر.
الأن تم إنشاء الملف yassin.o من أول مترجمين أو yassin.obj من أخر مترجمين، و الخطوه التالية هى انشاء المكتبة الإستاتيكية كالتالي:
ar rvs yassin.a yassin.o llvm-ar rvs yassin.a yassin.o lib /OUT:yassin.lib yassin.obj xilib -lib /OUT:yassin.lib yassin.obj
ar هو برنامج إنشاء المكتبات الخاص بـ gnu compiler collection
llvm-ar هو برنامج إنشاء المكتبات الخاص بـ low-level virtual-machine
lib هو برنامج إنشاء المكتبات الخاص بـ ++visual c
xilib هو برنامج إنشاء المكتبات الخاص بـ ++intel c
الأن تم إنشاء الملف yassin.a من أول برنامجين أو الملف yassin.lib من أخر برنامجين و للإستخدام مع مترجم gcc أو clang فقط قم بتمرير إسم المكتبة و مسارها أثناء تمرير الملفات التى تريد ترجمتها، و للمترجمين cl و icl تستخدم "link/" كالتالي:
cl /link yassin.libicl /link yassin.lib
و الله ولي التوفيق
مدونتي: C++ Tips and Tricks
ماهو الفرق بين release و debug ؟؟؟؟
إن المعلم والطبيب كلاهمــــا ... لا ينصحـان إذا همـا لم يكرمـا
فاصبر لدائـك إن أهنت طبيبه ... واصبــر لجهلك إن جفوت معلما
النسخه الـ debug تحتوى على معلومات تسمح للمنقح بتتبع تنفيذ الكود بالتواصل مع ملف الكود، أما النسخه الـ release فلا تحوى معلومات للتنقيح إلا الهام فقط و أيضا يتم تفعيل التحسينات.
و الله ولي التوفيق
تم تعديل هذه المشاركة بواسطة C++er في 17 مارس 2014 في 22:47
مدونتي: C++ Tips and Tricks
هذا الموضوع مغلق.