עבור לתוכן

dll, ו class ב C++

Featured Replies

פורסם

אני מנסה להעלות ולהשתמש ב dll לתוכנית שלי, ראיתי שאני יכול לטעון את הספרייה עם

hinstDLL = LoadLibrary("moshe.dll");

וראיתי שאפשר לטעון פונקציה שאני בדיוק יודע את השם שלה ואת המשתנים.

אבל הבעייה שלי היא שאת כל הפונקציות הוא הכניס בתוך class. איך אני מעלה אותו? ומגדיר אצלי כזה class?

(אני משתמש ב visual studio 2008 ומפתח לתוכנה ב C++)

פורסם

למה לטעון דינמית? טען את הספרייה באופן סטטי באמצעות כפתור ימני על הפרוייקט ו-add reference.

שים לב שעדיין תצטרך לעשות include לקובץ ה-header שמכיל את הגדרת הקלאס.

  • 1 חודש מאוחר יותר...
פורסם
  • מחבר

תודה - אבל אני מנסה לטעון קובץ dll של מישהו אחר שלא סיפק קובץ header.

יש למישהו פתרון אחר?

פורסם

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

פורסם
  • מחבר

כעקרון הוא נתן לי קובץ שמכיל את כל הפונקציות שיש בclass ואיזה משתנים יש בו,

ראיתי אתר שמפרסם שצריך להתחיל לכתוב הכל בעצמך ואז להעלות הכל ידנית, אבל זו חתיכת עבודה. . .

ראיתי שהוא כתב משהו ב C#, אבל אני צריך לעבוד עם C++, אולי יש דרך להשתמש ב C# דרך הC++ לצורך העניין?

פורסם

אי אפשר לעשות את זה באופן ישיר - אתה צריך איזשהו תיווך (לעטוף את הקוד #C בקוד ש-++C יודע לדבר איתו).

דרך אחת (פחות מומלצת לדעתי) היא COM, דרך שנייה היא באמצעות ++Managed C.

פורסם

להבנתי, אם יש לך את הגדרות ה-C# הדרושות על מנת לדבר עם DLL (נקרא pinvoke), אז אפשר די בקלות לתרגם אותם להצהרות C מתאימות.

פורסם

יש דרך ליצר lib מתוך קובץ dll שאין לך את הקוד שלו. אח"כ אתה מכליל את ה lib בפרויקט שלך ע"מ להשמש בספריות

לינקים אלו מסבירים כיצד

http://adrianhenke.wordpress.com/2008/12/05/create-lib-file-from-dll/

http://support.microsoft.com/?id=131313

מסביר על הנושא באופן כללי

http://msdn.microsoft.com/en-us/library/9yd93633%28v=VS.80%29.aspx

פורסם

זה לא מספיק ליצור .lib (וגם לא נחוץ למעשה). צריך את הפרמטרים לפונקציות. אבל אם יש לך את ההצהרות ב-C# אפשר לתרגמן ל-C.

פורסם

א) למה בלתי אפשרי?

ב) באף מקום הוא לא אמר שהוא עובד ב c#

ארכיון

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

דיונים חדשים