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

نام تاپیک: C run-time library

  1. #1
    کاربر تازه وارد آواتار Jenab4372
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    سن
    42
    پست
    47

    Exclamation C run-time library

    ++C فایلهاي متکی به خود می سازد. همین که برنامه تان را کامپایل و لینک کردید دیگر می توانید فایل exe را بدون هیچ دغدغه اي به دیگران بدهید.
    این موضوع برای کامپایلرهای 10 سال قبل ++VC صادق هست. در کامپایلرهای جدید همواره نسخه C run-time library که برای کتابخانه های استاندارد زبان ++C/C هستند (تحت عنوان visual C++‎ libraries) باید در سیستم کاربر نصب شوند یا dll های مورد نیاز در کنار فایل اجرایی کپی شوند. (در هر حال این موارد کمتر از 3MB است )
    سئوالي بسيار مهمي كه اينجا از شما دارم آيا در صورتي كه پروژه به صورت static library كامپايل شود هم چنين است؟ يعني باز اين كتابخانه ها را بايد نصب كرد يا خير؟

  2. #2

    نقل قول: C run-time library

    موردی که من مطرح کردم تنها نکته ای برای مقاله شما بود که مجددا اینجا توضیحاتی می دهم.

    اول اینکه باید نوع پروژه مشخص شود، که پروژه شما از نوع MFC هست.

    پروژه های MFC نیازمند دو دسته کتابخانه هستند:
    1- کتابخانه های MFC
    2- کتابخانه های C run-time

    اگر پروژه ای قرار هست کلا بدون نیازمندی به dll ای ساخته شود باید هر دو مورد فوق به صورت static لینک شوند نه فقط کتابخانه های MFC.

    در مقاله، مورد اول را در Properties از طریق Use MFC in a static library لینک کردید.
    اما مورد دوم را ذکر نکردید، یعنی :

    Project -> Properties ->C/C++‎ -> Code Generation -> Runtime library -> /MT
    هر چند که با اعمال مورد اول، مورد دوم نیز خودکار معمولا توسط کامپایلر تنظیم می شود، اما تنها جهت محکم کاری باید آن را چک کرد.

    در هر دو مورد فوق لینک کردن به شکل static معایب و محدودیت هایی دارد که به برخی از آن ها در لینک زیر اشاره کرده ام:
    http://www.barnamenevis.org/sh...d.php?t=151958

    پس اگر این دو مورد انجام شوند آنگاه فایل اجرایی بی نیاز به نصب کتابخانه ای هست، اما باید محدودیت های احتمالی را در نظر بگیرید و در جای درست به شکل static برنامه را عرضه کنید.


    در پایان مطلبی از توصیه های مایکروسافت جهت استفاده نکردن از حالت static linking تا جای ممکن:


    Prefer dynamic linking over static linking:
    It is not recommended to redistribute C/C++‎ applications that statically link to Visual C++‎ libraries. It is often mistakenly assumed that by statically linking your program to Visual C++‎ libraries it is possible to significantly improve the performance of an application. However the impact on performance of dynamically loading Visual C++‎ libraries is insignificant in almost all cases. Furthermore, static linking does not allow for servicing the application and its dependent libraries by either the application's author or Microsoft. For example, consider an application that is statically linked to a particular library, running on a client computer with a new version of this library. The application still uses code from the previous version of this library, and does not benefit from library improvements, such as security enhancements. Authors of C/C++‎ applications are strongly advised to think through the servicing scenario before deciding to statically link to dependent libraries, and use dynamic linking whenever possible.
    همان طور که می بینید رفع نواقص یا حتی موارد امنیتی که توسط windows update انجام می شوند در حالت static دیگر قابل اعمال نیستند.
    آخرین ویرایش به وسیله Nima_NF : یک شنبه 04 مرداد 1388 در 22:43 عصر

  3. #3
    کاربر دائمی آواتار emadfa
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    رشت
    پست
    193

    نقل قول: C run-time library

    اتفاقا این بحث سوال من هم بود!!!
    برای ایجاد پروژه در win32 به شکل static library باید چه کرد؟ آیا مراحل شبیه همینه؟

  4. #4

    نقل قول: C run-time library

    نقل قول نوشته شده توسط emadfa مشاهده تاپیک
    اتفاقا این بحث سوال من هم بود!!!
    برای ایجاد پروژه در win32 به شکل static library باید چه کرد؟ آیا مراحل شبیه همینه؟
    برای win32 فقط باید مورد دوم را انجام دهید، یعنی همان سوپیچ /MT

  5. #5

    نقل قول: C run-time library

    اگه به صورت Static کامپایل کنید، کدهای C runtime library داخل همون فایل EXE قرار میگیرن و مشکل حل میشه. البته من با VS2005 و VS2008 امتحان کردم.

  6. #6
    کاربر تازه وارد آواتار Jenab4372
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    سن
    42
    پست
    47

    نقل قول: C run-time library

    در کامپایلرهای جدید همواره نسخه C run-time library که برای کتابخانه های استاندارد زبان ++C/C هستند (تحت عنوان visual C++‎‎ libraries) باید در سیستم کاربر نصب شوند یا dll های مورد نیاز در کنار فایل اجرایی کپی شوند. (در هر حال این موارد کمتر از 3MB است )
    من يك پروژه MFC با VC2008 دارم كه ميخوام اون رو روي يك سيتم ديگر اجرا كنم مي شود اين كتباخانه هاي c run-tim و MFC رو برام توي يك فايل زيپ قرار بديد تا در پوشه برنامه ام در سيتم هدف كپي نمايم.

    ممنون

  7. #7

    نقل قول: C run-time library

    نقل قول نوشته شده توسط Jenab4372 مشاهده تاپیک
    من يك پروژه MFC با VC2008 دارم كه ميخوام اون رو روي يك سيتم ديگر اجرا كنم مي شود اين كتباخانه هاي c run-tim و MFC رو برام توي يك فايل زيپ قرار بديد تا در پوشه برنامه ام در سيتم هدف كپي نمايم.

    ممنون
    در کامپایلرهای نسخه 2005 و 2008 باید یک setup برای برنامه خود بسازید، dll ها خودکار تشخیص داده می شوند و در پروژه setup اضافه می شوند.
    نسخه آینده یعنی 2010 مجددا این امکان را می دهد که Dll ها را در کنار فایل اجرایی کپی کنید.

    در هر حال در صورت نیاز می توانید پروژه را به شکل static کامپایل کنید (اگر ضروری هست)

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

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