PDA

View Full Version : چطور فایل خروجی را در بورلند یکپارچه کنیم



X-DATA
چهارشنبه 19 بهمن 1390, 13:41 عصر
من میخوام تمامی runtime هایی که فایلم استفاده میکنه از جمله runtimeهایی که توسط کامپوننت ها اضافه شده در هنگام ساخت فایل توخود فایل exe قرار بگیره و لینک نشه . تیک گزینه dynamic link رو هم برداشتم ولی باز برخی از فایلها رو اضافه نمی کنه مثل *.bpl

Ananas
پنج شنبه 20 بهمن 1390, 03:44 صبح
منم همین مشکل رو دارم یعنی میخوام فایل dll رو کاربر نبینه و فقط یه فابل exe داشته باشه. اگه میشه قبل از اجرای برنامه dll ها رو از resource به هارد کپی کرد چطور این کارو انجام بدم. یعنی dll برنامه تو resource خود برنامه باشه از همونجا بخونه یا کپی کنه رو هارد بعد بخونه.
لطفا یکی جواب بده. خیلی ضروری هست. ممنون.

Ananas
چهارشنبه 03 اسفند 1390, 22:43 عصر
خوب یه چیزی پیدا کردم که تقریبا کار رو راه میندازه : باید تو تنظیمات پروژه قسمت C++ Linker-->Delay load DLLs اسم اون dll هایی رو که می خوایم بنویسیم بعد dll ها رو تو Resource پروژه بگذاریم و قبل از اینکه از توابع درون dll ها استفاده کنیم اونها رو با یک TResourceStream بر روی هارد سیستم کاربر کپی کنیم تمام ، دیگه همه چیز خودش درست میشه. یعنی بعد از اینکه برنامه اجرا میشه قبل از هر کاری Resource ها رو کپی کنه.
delay load dll هم برای اینه که قبل از خوندن dll ها برنامه بتونه اجرا شه و خودش dll های خودش رو کپی کنه ، اگه اینجا اسمشو ننویسیم موقع اجرای برنامه پیغام خطا پیدا نشدن dll رو میده و برنامه فرصت کپی کردن dll ها پیدا نمی کنه.
این برای C++Builder ولی برای دلفی پیداش نکردم اگه کسی می دونه لطفا بگه (منظورم گزینه delay load dll هست). ممنون.

BORHAN TEC
چهارشنبه 03 اسفند 1390, 23:59 عصر
این برای C++‎Builder ولی برای دلفی پیداش نکردم اگه کسی می دونه لطفا بگه (منظورم گزینه delay load dll هست). ممنون.
قابلیت delayed dll loading از زمان دلفی 2010 به اون اضافه شده است ولی در نسخه های قدیمی تر شما می توانید از Dynamic dll loading استفاده کنید.
این هم یک مقاله کامل در رابطه با delayed dll loading در دلفی:
http://www.drbob42.com/examines/examinC1.htm