نمایش نتایج 1 تا 1 از 1

نام تاپیک: لود کردن DLL ها و استفاده از انواع داده C در پایتون

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر تازه وارد آواتار theinfinity
    تاریخ عضویت
    دی 1387
    محل زندگی
    shz
    پست
    64

    لود کردن DLL ها و استفاده از انواع داده C در پایتون

    برای استفاده از یه dll در پایتون شما نیاز دارین از ctypes استفاده کنید که یه کتابخانه خارجی برای پایتون محسوب میشه!
    با یه مثال کوچولو نشون میدم چطور میشه اینکارو انجام داد امیدوارم مفید باشه!


    import ctypes
    cdll_obj = ctypes.cdll
    p = cdll_obj.msvcrt.printf
    pr("siavash\n")
    string = 'siavash'
    char_pointer = ctypes.c_char_p(string)
    address = ctypes.byref(char_pointer)
    print address

    #کدهای بالا برا محیط ویندوز نوشته و تست شده
    اول یه شی cdll برای فراخوانی dll ها ساخته شده(cdll از قرارداد فراخوانیه* cdecl استفاده می کنه)
    این شی می تونه از نوع oledll و windll هم باشه که در این صورت از قرارداد فراخوانیه stdcall استفاده می کنه
    در ادامه msvcrt.dll لود شده که حاوی توابع استاندارد C هست و از اون تابع printf به داخل تابع pr کپی شده!(برای لود کردن dllهای دلخواه می تونین اونها رو در دایرکتوری فایل پایتونتون کپی کنید)
    در خط بعدی یه آرگومان به تابع pr که همون تابع printf هست ارسال شده و تابع فراخوانی شده.
    تا اینجا dll لود شده ولی قابلیت دیگه استفاده از ctypes اینه که شما می تونین از c datatypes در پایتون استفاده کنید که در بالا از نوع داده اشاره گر به char استفاده شده و آدرس اون چاپ می شه !
    (اطلاعات بیشتر=>python manual)
    ================================================== ==
    *calling convention
    آخرین ویرایش به وسیله Mehdi Asgari : سه شنبه 18 خرداد 1389 در 10:03 صبح دلیل: فاصله دادن در کد

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •