DLLs

yaishb

New member
DLLs

הי, כתבתי DLL ב ++C. איך אני קורא לפונציות שלו מפרויקט אחר (משהו עם dllimport)? ברק.
 

galh

New member
2 אפשרויות

הראשונה, סטטית, אם יש לך את קובץ ה- LIB וה- H של ה- DLL, אז פשוט מוסיפים אותם לפרוייקט שלך. ה- DLL יעלה ברגע שהתוכנית שלך תתחיל לרוץ. השניה, דינמית, באמצעות LoadLibrary ו- GetProcAddress (תסתכל בתיעוד). ה- DLL יעלה רק כאשר תקרא ל- LoadLibrary.
 

yaishb

New member
יש צורך באיזה include#?

אני עובד מתוך consule application. ברק.
 

yaishb

New member
קבל תיקון:

קיבלתי פוינטר לפונקציה מה DLL. איך אני מריץ אותה? (לא מצאתי ב MSDN) ברק.
 

galh

New member
רושמים את שם הפויינטר (עם סוגריים)

אם lpfnDllFunc1 הוא מצביע לפונקציה שמקבלת שני פרמטרים אז הקריאה לפונקציה מתבצעת ע"י lpfnDllFunc1(dwParam1, uParam2);
 

yaishb

New member
לא עובד!

יש לי שגיאה: too many actual parameters. כשאתה אומר פוינטר הכוונה למה ש ()GetProcAddress מחזירה? ברק.
 

galh

New member
עובד אם הפויינטר מוגדר נכון

כן, למה ש- GetProcAddress מחזירה. אבל אותו משנה חייב להיות מוגדר כפויינטר לפונקציה שמקבלת את אותו מספר וסוג הפרמטרים של הפונקציה ב- DLL (כולל הערך שהיא מחזירה. לדוגמא:
UINT (CALLBACK* LPFNDLLFUNC)(DWORD,UINT);​
זה מגדיר מצביע לפונקציה שמקבלת שני פרמטרים, DWORD ו- UINT ומחזירה UINT.
 
למעלה