עבור לתוכן

יצירת DLL בלי שינו קוד המקור

Featured Replies

פורסם

1. איך אני יכול ליצור קובץ dll מקוד C (בלי classes) בלי לשנות את קוד המקור- הפונקציות.

2. כמו כן איך אני יכול להשתמש בקובץ הנ"ל בפרויקטי ההרצה המשתמשים בפונקציות מתוך ה-dll כאשר גם בו אני לא רוצה לשנות את קוד המקור.

(אני לא מתכוון למספר שורות בודדות שיוספו לקובצי ה-header בלי תלות במספר הפונקציות המיוצאות/מיובאות מקובץ ה-dll.)

פורסם
  • מחבר

כן אבל שם הוא משתמש ב-__export .

כיוון שיש לי המון פונקציות ואני לא רוצה לכתוב לפני כל אחת מהן מחדש __export , אז איך אני יוצר את הקובץ ללא זה.

פשוט כאשר יש classes אפשר "ליצא" את כולו אבל כאשר אין classes אז צריך ליצא כל פונקציה ופונקציה על מנת ליצור את קובץ ה- lib.

וזו בעצם השאלה שלי איך אני יכול ליצר קובץ lib ללא "יצוא" הפונקציות.

(וכ"כ גם ליבא קובץ dll ללא צורך "ביבוא כל פונקציה בנפרד)

פורסם

welcome to the wonderful world of find&replace ;D

ברוב ה- editors הנורמליים אתה יכול להשתמש ב- regular expressions כדי לבצע את החיפוש וההחלפה.

עוד אפשרות היא אם הקומפיילר שלך נותן לך לשנות את ה- calling convension של הפונקציות בפרוייקט מסויים. נדמה לי שאתה צריך שזה יהיה __stdcall

פורסם
  • מחבר

אתה יכול להסביר יותר

לא הבנתי איך אני יכול לעשות את זה בקלות כי יש לי המון פונקציות וכ"כ המון קריאות להן

(אני משתמש ב-visual 6)

פורסם

אני לא יודע איך בדיוק התמיכה של Visual Studio 6 בהחלפה עם regular expression, אז אני לא יודע אם מה שאני אומר כאן יעבוד שם. מקסימום תוריד textpad

(כדי שלא יתחרבשו הסוגריים הוספתי AAAA בהתחלה ובסוף של השורות, אז תתעלם מהם)

תעשה find&replace, ב- find תרשום

AAAA\(^[a-z_][a-z0-9_]*\) \([a-z_][a-z0-9_]*\)(AAAA

ב- replace תרשום

AAAA\1 export__ \2(AAAA

מה שזה עושה, תכלס, זה לחפש התחלה של הגדרת פונקציה, כלומר - תחילת שורה, שם שמתחיל באות (ערך החזרה) ועוד שם שאחריו יש סוגר פותח (שם הפונקציה)

את המילה הראשונה הוא זוכר כ"1" ואת השניה כ"2", ואז מכניס export__ ביניהם.

שים לב שזה יעבוד רק לפונקציות שההגדרה שלהם מתחילה בתחילת שורה, ורק פונקציות ב- C, כי זה מניח ששם הפונקציה לא מכיל "::", ושלפונקציה יש תמיד ערך החזרה (כלומר - לא constructor).

בכלל, כדאי לך ללמוד לעבוד עם regular expressions. זה יכול לחסוך המון זמן בכל מיני מקרים.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים