מנסה לקרוא לDLL של VC מVB

eli5m

New member
מנסה לקרוא לDLL של VC מVB

פעלתי לפי הדוגמא של ברנדל הוספתי את הקוד הבא Declare Function myFunctionBame Lib "myDllName.dll" (byval hWnd as long) וכשאני מנסה לקרוא לפונקציה שלי אני מקבל את ה- ERROR הבא : Can't find DLL entry point AttachWndHandle in vcvbdll.dll
 

eli5m

New member
לא הבנתי מה צריך להגדיר אם ה- dll

הוא לVB או VC
 

gilad_no

New member
את סוג ייצוא הפונקציה

C++ משנה (DECORATED) את שמות הפונקציות לייצוא ולכן הן מתאימות רק לישומי C++. כדי להשתמש בפונקציה משפות שונות, צריך לדעת להגדיר אותה נכון. תבדוק את הקישור התשובה הקודמת שלי. הוא מראה בדיוק את מה שאתה מחפש.
 

ברנדל

New member
כן , כמובן

לא הזכרתי את זה (כי רשמת שליצא אתה יודע) c++ מוסיפה decoration לשמות על מנת למנוע בלבול בין שמות פונקציות שהם זהים אבל שייכים למחלקות שונות לדוגמא. הבעיה היא שה decoration משתנה מקומפילר לקומפילר כשאתה מיצא ל vb אתה חייב לשמור על סטנדרט קבוע ולכן אתה צריך ליצא ב stile של c הגדרת הפונקציה ב cv צריכה להראות כך:
extern "C" __declspec(dllexport) void MFuncName(HWND Arg) { }​
extern "c" מורה לקומפילר שלא להוסיף decoration נוסף מעבר לשם הפונקציה, כך ששפות אחרות יכולות לזהות
 
למעלה