PDA

View Full Version : سوال dll :



baran_2005
یک شنبه 08 شهریور 1388, 13:05 عصر
سلام
من از چند تا dll استفاده مي كنم . و در زمان فراخواني به درستي اجرا مي شود اما در زمان بستن برنامه به ازاي هر بار استفاده از dll پيغام مي دهد كه نمي تواند در آدرسي كه نشان مي هد بخواند يا بنويسد اين پيغام و چه كار كنم . البته فكر مي كنم بابت حافظه اي كه اشغال كرده اين پيغام و مي دهد اگر حدسم درست است چه طوري فضا dll را خالي كنم . البته من از pointer استفاده نمي كنم .

vcldeveloper
یک شنبه 08 شهریور 1388, 18:16 عصر
خب....

چه کدی نوشتید؟
در پایان برنامه چه کدی اجرا میشه؟
DLL چی بوده؟
قرار بوده DLL در برنامه شما چیکار کنه؟

K.Mohammadreza
یک شنبه 08 شهریور 1388, 18:52 عصر
من يک آموزش ساخت و نحوه ي استفاده صحيح از Dll براتون ميذارم توصيه ميکنم ببينيد

baran_2005
دوشنبه 09 شهریور 1388, 09:10 صبح
حجم برنامه من زياد است من 16تا نرم افزار حسابداري دارم كه كمترين حجم يك برنامه نزديك 20 مگابايت است و به خاطر گرافيك مورد استفاده در آن حجم بالايي از حافظه را اشغال مي كند . چون dll در يك مثال ساده به درستي جواب مي دهد و خطايي هم ندارد . من به كتابخانه ,application ,screen, connection, string را پاس مي دهم البته با توجه به مقاله ضميمه من نوع رشته را به pchar تغيير دادم . فكر مي كنم بيشتر روي قضيه مديريت حافظه مشكل داشته باشد . من دارم بيشتر قسمت هاي برنامه را dll مي كنم و اين خطا در تمام dl ها رخ مي دهد .

و يك سوال ديگر آيا امكان استفاده از متغيرها داخل dll در برنامه اي كه از dll استفاده مي كند وجود دارد ؟

baran_2005
دوشنبه 09 شهریور 1388, 09:40 صبح
Delphi memory manager problems in dynamic libraries
http://delphi.about.com/od/objectpascalide/l/aa103003b.htm
در اين سايت درباره مديريت حافظه صحبت شده است من در رويداد بستن هر فرم با دستور action:=cafree حافظه فرم و خالي كردم . اما هنوز مشكل حافظه اشغال شده توسط توابع در unit رو دارم .

tdkhakpur
دوشنبه 09 شهریور 1388, 11:29 صبح
سلام
ببینید در مورد dll برنامه ای که dll را اجرا میکند میتواند به داده های dll دسترسی پیدا کند و لی dll حق استفاده از داده های برنامه پدر را ندارد .
استفاده از dll به عنوان پارچه هایی از سیستم کل واقعا فواید زیادی دارد ولی نمی دانم طرز ارسال داده ها به dll را چگونه انجام میدهید ولی یک راه پیشنهادی این هست که شما داده های ارسالی به dll را را در همان برنامه پدر با دریافت آدرسها تنظیم کنید.