כמה שאלות על DLL

כמה שאלות על DLL

איך אני בונה DLL שמייצא מחלקה שלמה או אפילו אוסף מחלקות? הבנתי שיש ל-MFC מנגנון שתומך בזה, האם זו הדרך היחידה? האם יש מנגנון win32 סטנדרטי שלא מתבסס על MFC, windows forms? האם ל- M$ יש עוד סוגי קבצים / טכנולוגיות שנותנים את הפונקציונליות של DLL? האם DLL הוא מוצר של מיקרוסופט או סטנדרט חוצה פלטפורמות? ולמה הקוד הבא מייצר לי שגיאה? 'stdlib.h - exit' : redefinition; __declspec(noreturn) differs הקוד:
#include "Windows.h" #include "GL/glut.h" typedef void (DRAWFUNC) (void); int main(int argc, char *argv[]) { hInstance =LoadLibrary("drawFuncDLL.dll"); func =(DRAWFUNC*)GetProcAddress(hInstance, "LineSegment"); glutDisplayFunc(func); return 0; }​
כתבתי את זה כפרויקט win32 app פשוט בשפת ++C, בלי managed או MFC. כשעבדתי עם קישור מפורש לא היו בעיות קומפילציה. (declspec(dllimport) + drawFuncDLL.lib) אם השאלות שלי לא ממוקדות מספיק אז אתם מוזמנים לעשות לי לינץ' כמו לבחור הקודם.
 

gilad_no

New member
DLL

DLL זוהי סיפרייה משותפת של חלונות (ולכן גם של מייקרוסופט). אפשר ליצור DLL גם ללא MFC. כדי לייצא מחלקה\פונקציה או משתנה, צריך להגדיר אותו בתור dllexport. למשל:
int __declspec(dllexport) Sum(int a,int b) { return a+b; }​
וכדי להפעיל את הפונקציה מקובץ אחר שלך, תצטרך להגדיר אותו כך:
int __declspec(dllimport) Sum(int a,int b); int main() { int x=Sum(1,2); return 0; }​
וכשתהדר את הפרוייקט שלך, תצטרך לקשר אותו עם הLIB של הDLL שלך (או להגדיר אותו בתלויות - DEPENDENCIES ואז זה ייעשה אוטומטית). זה על קצה המזלג, אם יש לך שאלה יותר ספציפית, אל תהסס לשאול.
 
תודה מאוחרת. ../images/Emo13.gif

אז DLL הוא לא תקן חוצה פלטפורמות? טוב לדעת. ביינתים מצאתי עוד חומר ב codeGuru ובקבצי העזרה של VS 2003. שאלות יותר ספיציפיות אני מניח שיהיו לי אחרי שאקרא קצת ואשתפשף בכתיבת כמה DLL-ים.
 
למעלה