שאלה ב ++C

the another one

New member
שאלה ב ++C

שלום ! אני יודע שיש אפשרות לעשות ב ++C תוכנית עדכון לתוכנית אחרת שכתבתי, ז"א אחרי שיצרתי את ה EXE - לשנות אותה בלי לקמפל מחדש ! מישהו יודע איך עושים את זה ?
 

gmorphus

New member
DLL-ים?

אני כרגע לא יכול לחשוב על אפשרות אחרת... DLL - Dynamic Load Library זה בעצם קובץ בינארי שמכיל פונקציות מסוימות והתוכנה שלך, הקובץ EXE טוען את הפונקציות האלה כל פעם מחדש כאשר הוא מורץ. מה הכוונה? נניח שיש לי פונקציה שמקבלת איזושהי מחרוזת ומחזירה איזושהי מחרוזת אחרת בהתאם למה שהגדרתי בפונקציה. נניח שהפעולות שאני עושה על המחרוזת הן פעולות מאוד מסובכות ואני מאמין שבעתיד אני אמצא אלגוריתם יותר טוב ממה שיש לי עכשיו כדי לעשות את הפעולות האלה. מה אני עושה? שם את הפונקציה הזאת בDLL, ולתוכנה שלי אני אומר לקחת את הפונקציה מהDLL הזה. מה הרווחתי? בעתיד אני פשוט אוכל להחליף את הDLL באחד יותר עדכני ומהיר (כמובן שחייבים לשמור על אותו הממשק) ולמעשה עדכנתי את התוכנה שלי, בלי לקמפל את כולה מחדש, אלא חלק קטן ממנה. אני אישית לא יכול כרגע לחשוב על דרך אחרת. אני אשמח אם יהיו פה אחרים שיאירו את עיניי. בכל מקרה, מכאן ועד ליישום מה שאמרתי צריך ללמוד קצת. זה לא מאוד מסובך, אבל רצוי שתיקח איזשהו ספר שמסביר איך לעבוד עם DLL. בהצלחה!
 

מוטציה1

New member
תיקונון

מה שמסתתר מאחורי ה - DLL הוא Dynamic Link Library , והיא אכן Run-Time Loaded - כלומר נטענת בכל פעם בזמן ריצה.
 

annefan

New member
שתי אפשרויות

יש אפשרות ל-patch. אתה פותח את הקובץ EXE של התוכנית (מתוך תוכנית אחרת) כקובץ בינארי, ומשנה נתונים ככל קובץ. אפשרות אחרת היא לערוך את ה-resources של התוכנית אם יש (גרסאות, אייקונים וכד'). Resource Hacker, לדוגמא, עושה את זה.
 
למעלה