SajjadKhati
کاربر فعال <A href="http://forum.majidonline.com/f
سلام استاد علی
من چندین متد با چندین روش متفاوت رو تست کردم ولی توی همه شون به بن بست خوردم :
من الان میخوام کلا یه آرایه ی پر (مثلا آرایه ای از اعداد) از لوا بفرستم برای dll ام و توی dll هم مثلا مقدار خونه ی صفر ام آرایه که یه عدد میشه رو برام برگردونه
الان وقتی میخوام از لوا ، آرایه رو بفرستم ، باید اشاره گر اون آرایه رو از لوا بفرستم یا خود آرایه رو بفرستم؟ اصلا مگه خود یه کلاسی که میفرستیم ، مگه اشاره گر به اون کلاس نیست؟ یعنی خود آرایه ، در واقع اشاره گری به آرایه هست همونطور که گفتین دیگه . پس فرقش چیه که واقعا خودمون اشاره گر به آرایه رو (با متدها و کلاس ها و روش های متفاوت) بفرستیم یا خود آرایه رو بفرستیم؟
بعد اینکه فرق اشاره گر intptr با اشاره گری که خودمون بصورت unsafe مینویسیم و حتی با اشاره گرهای عادی یعنی شی هایی که به کلاس اشاره میکنن (مثلا شی ای از آرایه یا شی ای از یه کلاس و ...) چین؟
حالا من اشاره گر به خونه ی آرایه رو میفرستادم ولی یا برنامه کرش میشد یا اگه کرش نمیشد ، با اونکه از لوا ، آرایه ی پر رو میفرستادم ولی در dll مقدارش nil میشد !
اصلا نمیدونم مشکل از کدهای ارسالی از لوا هست یا کدهای سی شارپم !
من چندین متد با چندین روش متفاوت رو تست کردم ولی توی همه شون به بن بست خوردم :
کد:
[DllExport("ArrayPointer", CallingConvention.StdCall)]
public static void ArrayPointer(IntPtr arrayArg, int arrayLength)
{
int[] myArray = new int[arrayLength];
Marshal.Copy(arrayArg, myArray, 0, arrayLength);
}
[DllExport("ArrayPointer2", CallingConvention.StdCall)]
public static int ArrayPointer2(IntPtr arrayArg, int arrayLength)
{
int[] myArray = new int[arrayLength];
Marshal.Copy(arrayArg, myArray, 0, arrayLength);
return myArray[0];
}
[DllExport("ArrayPointer3", CallingConvention.StdCall)]
public static int ArrayPointer3(int[] myArray)
{
return myArray[0];
}
من الان میخوام کلا یه آرایه ی پر (مثلا آرایه ای از اعداد) از لوا بفرستم برای dll ام و توی dll هم مثلا مقدار خونه ی صفر ام آرایه که یه عدد میشه رو برام برگردونه
الان وقتی میخوام از لوا ، آرایه رو بفرستم ، باید اشاره گر اون آرایه رو از لوا بفرستم یا خود آرایه رو بفرستم؟ اصلا مگه خود یه کلاسی که میفرستیم ، مگه اشاره گر به اون کلاس نیست؟ یعنی خود آرایه ، در واقع اشاره گری به آرایه هست همونطور که گفتین دیگه . پس فرقش چیه که واقعا خودمون اشاره گر به آرایه رو (با متدها و کلاس ها و روش های متفاوت) بفرستیم یا خود آرایه رو بفرستیم؟
بعد اینکه فرق اشاره گر intptr با اشاره گری که خودمون بصورت unsafe مینویسیم و حتی با اشاره گرهای عادی یعنی شی هایی که به کلاس اشاره میکنن (مثلا شی ای از آرایه یا شی ای از یه کلاس و ...) چین؟
حالا من اشاره گر به خونه ی آرایه رو میفرستادم ولی یا برنامه کرش میشد یا اگه کرش نمیشد ، با اونکه از لوا ، آرایه ی پر رو میفرستادم ولی در dll مقدارش nil میشد !
اصلا نمیدونم مشکل از کدهای ارسالی از لوا هست یا کدهای سی شارپم !