נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: שגיאה בC# שימוש בPInvoke

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
JonJon
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 03 April 2006 בשעה 16:54 | IP רשוּם
ציטוט JonJon

שלום אנשים

אני אקצר את הסיפור שמאחורי התוכנית שלי ואסביר:

יש לי ממשק שכתבתי לי בC#

וקוד שכתבתי בC++ והפכתי לDLL

את הDLL הזה אני טוען בתוך תוכנית הC# שלי על ידי

[DllImport]

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

עד עכשיו הכל טוב עשיתי ככה כמה פונקציות והכל עבד יפה...

עד שהגיעה בעיה...

פונקציה אחת שנמצאת אצלי בקוד C++ מחזירה מבנה שהאיבר היחידי שלו הוא מערך של מבנים אחרים

 

יש מבנה סתם

int a;

int b;

 

שנקרא hello

ומבנה אחר שהאיבר שלו הוא

hello test[10];

והוא נקרא(המבנה)

goodbye

עכשיו בחזית הC# יצרתי בדיוק אותו מבנה אותם סוגים אותו גודל אותו קטע...

הגדרתי שהפונקציה שאני טוען מתוך הDLL מחזירה את המבנה המיוחד

וברגע שקראתי לפונקציה קבלתי את השגיאה הבאה:

Method's type signature is not PInvoke compatible.

 

עכשיו התעצבנתי הרצתי בדיקות והגעתי למסקנה שהמערך הורס לי !!

*בדקתי גם עם פונקציה שמחזירה במקום מבנה של מערך של מבנים

סתם מערך רגיל או מבנה עם מערך בתוכו וברגע ששמתי את המערך בהערה

הכל רץ חלק

 

אז הבעיה היא בהגדרת מערך בין אם זה בתור איבר במבנה הפנימי או במבנה החיצוני

 

אני חושד בעובדה שהגדרתי את המערך ככה: Type[] Name;

ואני יודע שזה רק רפרנס וצריך גם לאתחל אותו עם

Name = new Type[Size];

אבל אני לא יודע איך לעשות את זה למבנים

אם למישהו יש הצעה כלשהי בבקשה... זה יעזור לי מאוד

חזרה לתחילת העמוד הצג את כרטיס החבר של JonJon חפש הודעות אחרות של JonJon בקר בדף הבית של JonJon
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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