PDA

View Full Version : مشکل با DLLImport



r0ot$harp
سه شنبه 08 شهریور 1390, 14:43 عصر
سلام دوستان عزیز .

یه ماژول سخت افزاری دارم که می خوام با C# با اون کار کنم .

Declare C++ به این صورت هست :

extern "C" __declspec(dllexport) int _stdcall GetDevice(unsigned char *Data, unsigned int *Len);

حالا می خوام بدونم تو C# چه طوری می شه ؟؟؟

باتشکر احسان

mehdi.mousavi
سه شنبه 08 شهریور 1390, 15:04 عصر
سلام.
می تونید بدین شکل عمل کنید:

[System.Runtime.InteropServices.DllImport("filename.dll", EntryPoint="GetDevice")]
public static extern int GetDevice(System.IntPtr data, ref uint len);

موفق باشید.

r0ot$harp
سه شنبه 08 شهریور 1390, 17:50 عصر
ممنون بابت پاسختون .

من همینطور عمل کردم اما زمان اجرا این خطا رو می ده :

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.


IntPtr d = Marshal.AllocHGlobal(512);
int sss = GetDevice(d, 512);

باتشکر احسان

r0ot$harp
پنج شنبه 10 شهریور 1390, 18:40 عصر
دوستان مشکلم حل شد.

مشکل به خاطر وجود داشتن پارامتر های Unmanaged در کامپوننت های دلفی هست . که باید از [MarshalAs(UnmanagedType.SysInt)] قبل از Intptr استفاده کنید .

باتشکر احسان