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

نام تاپیک: وارد کردن dll در ویژوال 2005

  1. #1
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372

    Post وارد کردن dll در ویژوال 2005

    با سلام

    میخواستم بدونم چطور میشه در ویژوال سی پلاس 2005 یک dll (مثل shamsi.dll ) رو وارد کرد و از توابعش استفاده کرد؟

    با تشکر
    آخرین ویرایش به وسیله A_Salimi : چهارشنبه 26 دی 1386 در 00:25 صبح دلیل: عدم تایپ کلمه سی پلاس

  2. #2
    آخرین پست من را در این لینک ببینید:
    https://barnamenevis.org/showthread.php?t=91154

    ضمنا شما باید dll را در فلدر فایل اجرایی قرار دهید .
    اگر هم که فایل import library همراه dll نیست باید آن را از طریق توابعی مثل LoadLibrary و GetProcAddress مورد استفاده قرار دهید.

  3. #3
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372

    Exclamation

    با سلام

    دوست عزیز از پاسخ شما ممنونم اما متاسفانه مشکلم برطرف نشد

    میخواستم دقیقا مسیری که dll رو در برنامه میشه load کرد رو بگید چون در برنامه ای مثل vb این کار از طریق منوی Project گزینه ی Refernces و حتی در ویژوال 6 از طریق class wizard این کار میسر است
    اما مشکلم در 2005 هست
    اگه توضیح بیشتری بدید ممنون میشم

  4. #4
    برای کامپایل می توانید dll را در فلدر system32 ویندوز کپی کنید و دیگر نیازی به اضافه کردن خود dll به پروژه نیست ، اگر شما سورس dll را داشتید نیاز بود تا آن را به پروژه به صورت dependency اضافه کنید .

    اگر فقط فایل dll را دارید به همان روش ذکر شده در پست قبل باید از استفاده کنید. (به صورت run-time)
    اگر فایل .h و .lib را دارید برای یک نمونه این صفحه را ببینید:
    http://www.cs.uiowa.edu/~cwyman/classes/common/howto/winGLUT.html

  5. #5
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372
    سلام دوست عزیز

    نه فایل .lib و نه .h هیچکدوم رو ندارم
    ببینید این dll رو که میگم همون dll معروف shamsi.dll هست که از آدرس زیر به همراه help کامل دریافتش کردم

    http://files.oxinsoft.com/shamsidll/shamsidll.zip

    من سعی کردم از روشهایی واسه بارگذاری این dll استفاده کنم اما حتی با اینکه در برنامه خطایی وجود نداشت درست عمل نکرد (ضمنا من dll رو رجیستر هم کردم و اون رو در پوشه سیستم هم قرار دادم)

    حالا من روش کارم رو واسه شما توضیح میدم اگه در بعضی جاها کارهای عجیب غریبی کردم من رو ببخشید و به من نخندید چون این تجربه اولم بود

    ابتدا یک دستگیره برای فراخوانی dll تعریف کردم :

    در ادامه سعی کردم تابع Miladi2Shamsi مربوط به dll رو تعریف کنم : یعنی نوع متغیری به نام MILADI2SHAMSI را تعریف کردم که آدرس تابعی را نگهداری می کند که از نوع CString را برمی گرداند و پارامتری از نوع CString دارد دستور بعدی هم متغیری به نام Miladi2Shamsi و از نوع MILADI2SHAMSI تعریف کردم. این کد ها را در فایل Dlg.cpp برنامه قرار دادم

    typedef CString(*MILADI2SHAMSI)(CString);
    MILADI2SHAMSI Miladi2Shamsi ;
    در OnInitDialog هم کدهای زیر رو نوشتم :
    dastgire=LoadLibrary(_T("shamsi.DLL"));

    Miladi2Shamsi=(MILADI2SHAMSI)GetProcAddress(dastgi re,"MILADI2SHAMSI");

    یک دکمه و دو Edit text با متغیر هایی از نوع cstring به نامهای shams و milad تعریف کردم و کدهای زیر رو در تابع دکمه قرار دادم :

    UpdateData();
    shams=Miladi2Shamsi(milad);
    UpdateData(FALSE);
    اما در نهایت جواب نگرفتم. میشه یک راهکار درست و حسابی بگید و بگید که اصلا کارهایی رو که من انجام دادم درست هستند یا نه ؟

    با تشکر
    آخرین ویرایش به وسیله Nima_NF : پنج شنبه 27 دی 1386 در 00:43 صبح دلیل: مرتب کردن

  6. #6
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372

    Angry

    چرا فونت ها بهم می ریزند؟؟؟؟؟؟؟؟

  7. #7
    نقل قول نوشته شده توسط eshgh_82 مشاهده تاپیک
    چرا فونت ها بهم می ریزند؟؟؟؟؟؟؟؟
    مطالب را مستقیم در همینجا تایپ کنید نه در word یا نرم افزارهای دیگر. اگر هم در word تایپ می کنید ابتدا در یک notepad کپی کنید و سپس در فروم .
    کد ها را هم لطفا در تک کد قرار دهید.

    نه فایل .lib و نه .h هیچکدوم رو ندارم
    ببینید این dll رو که میگم همون dll معروف shamsi.dll هست که از آدرس زیر به همراه help کامل دریافتش کردم
    دوست گرامی ،اگر از ابتدا به جای یک خط سوال ، بیشتر و کامل تر مثل حالا توضیح می دادید مطمئنا زودتر به جواب می رسیدید.

    اصلا کارهایی رو که من انجام دادم درست هستند یا نه ؟
    بله روش شما کاملا درست هست ، ولی شما باید پس از هر فراخوانی تابع ها چک کنید که آیا کار LoadLibrary و بقیه توابع درست به پایان رسیده است یا نه ، در غیر اینصورت کامپایلر خطایی نمی دهد چون به عهده شماست که چک کنید:

    hDLL = LoadLibrary("MyDLL");
    if (hDLL != NULL)
    {
    Miladi2Shamsi_Func = (LPFNDLLFUNC1)GetProcAddress(hDLL, "DLLFunc1");
    if ( ! Miladi2Shamsi_Func )
    {
    // handle the error FreeLibrary(hDLL);
    return SOME_ERROR_CODE;
    }
    else
    // something else
    }


    در هر مرحله نیز با راست کیک بر روی خط کد مورد نظر و run to cursor برنامه را debug کنید و ببینید در کجا مشکل ایجاد می شود ، ببینید که آیا در CString چیزی ریخته می شود یا نه اصلا تابع load نمی شود.

    ضمنا نام تابع را در آرگومان دوم به همان صورت تعریف شده در help بنویسید نه همه با حروف بزرگ و اگر هم جواب نداد نام ان را با _T بنویسید تا یونیکد باشد:

    Miladi2Shamsi_Func =(MILADI2SHAMSI)GetProcAddress(dastgire,"Miladi2Sh amsi");
    // or use : _T("Miladi2Shamsi")
    موفق باشید
    آخرین ویرایش به وسیله Nima_NF : پنج شنبه 27 دی 1386 در 01:54 صبح دلیل: تکمیل

  8. #8
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372
    [دوست من تا جایی که من کسب اطلاع کردم این dll یک dll معمولی نبود (اکتیوایکس dll )
    ولی در هر حال طریقه استفاده از اون رو فهمیدم .
    با تشکر از شما


  9. #9
    کاربر جدید
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    همه جای ایران سرای من است
    پست
    3

    نقل قول: وارد کردن dll در ویژوال 2005

    سلام دوستان
    اگه میشه طریقه استفاده از shamsidll رو به صورت خیلی روان واسم توضیح بدید .
    من تا به حال هیچ باهاش کار نکردم . یعنی اصلا نمی دونم چطور add میشه و غیره
    خیلی متشکرم

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

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