PDA

View Full Version : مشکل در استفاده از dll



nima_nimaee
پنج شنبه 04 مرداد 1386, 15:27 عصر
با .net 2005 یه dll نوشتم حالا می خواهم اون رو تو .net 2003 استفاده کنم ولی error میده !!!!
کسی تا حالا این کارو کرده ؟؟؟؟
از dll های خود ویندوز مثل kernel32 یا ... استفاده کردم ولی از dll هایی که توسط نرم افزار های برنامه نویسی دیگر نوشته شده نونستم استفاده کنم !!!!:ناراحت:

mohammad272005
جمعه 05 مرداد 1386, 03:33 صبح
معلومه چرا عزیز. تو 2005 شما به 2 net. برنامه می نویسی و لی تو 2003، net 1.1. هست.

once4ever
جمعه 05 مرداد 1386, 09:24 صبح
چه پیغامی میده؟
معمولا اگه درست نوشته باشی و هر دو فریم ورک داشته باشی نباید خطایی بگیره

nima_nimaee
سه شنبه 16 مرداد 1386, 14:10 عصر
نه کلا بحث سر این است که اگر یه dll نوشته باشی باید بتونی تو نرم افزار های دیگه (زبان های برنامه نویسی) بتونی ازش استفاده کنی
چون تبدیل به کد میشه
مشکل من اینجاست که نمیشه تو زبان های دیگه استفاده کرد
2005 رو مثال زدم
اگه کسی میدونه کمک کنه

once4ever
سه شنبه 16 مرداد 1386, 14:18 عصر
نه کلا بحث سر این است که اگر یه dll نوشته باشی باید بتونی تو نرم افزار های دیگه (زبان های برنامه نویسی) بتونی ازش استفاده کنی

نخیر dll شما بر روی یک فریم ورک خاص کار میکنه.
ولی اگه یه dll با ++vc بنویسی میتونی تو هر برنامه ای ازش استفاده کنی.

hdv212
سه شنبه 16 مرداد 1386, 14:19 عصر
همانطور که mohammad272005 عزیز گفت، شما با نسخه ی بعدی یه dll نوشتی و میخوای تو نسخه ی قبلی اجرا کنی، چنین چیزی غیر ممکنه، ولی اگه با یکی از زبانهای دات نت dll نوشتی مثلا سی شارپ و میخوای توی vb.net استفاده کنی، باید مواظب باشی که از متغیر های unsigned استفاده نکنی، چون توی ویبی support نمیشه و تضمینی برای اجرای صحیح برنامه ات نیست.

golihaghighi
سه شنبه 16 مرداد 1386, 15:51 عصر
چطور میشه با دات نت ۲۰۰۵ dll نوشت که تو همه زبونا کار کنه؟

rasoul_ras
سه شنبه 16 مرداد 1386, 16:32 عصر
از کلاسهای دات نت استفاده نکنی

mehdi.mousavi
سه شنبه 16 مرداد 1386, 17:36 عصر
چطور میشه با دات نت ۲۰۰۵ dll نوشت که تو همه زبونا کار کنه؟

سلام.
قبل از اینکه این سوال رو جواب بدم، اجازه بدید یه مساله ای رو متذکر بشم. ما چیزی به اسم dotnet 2005 نداریم!

1) اگر میخواهید به Compiler اشاره کنید، باید بگید Visual Studio 2005

2) اگر میخواهید به DotNet FrameWork اشاره کنید، باید نسخه فریمورک رو بنویسید: 1، 1.1، 2، 3 و ....

اما جواب سوالتون. اگر می خواهید یه Native DLL درست کنید که بشه تو همه زبونهای برنامه نویسی کار کنه، باید DLL ای با تکنولوژی COM/COM+ بنویسید. به این ترتیب، نه تنها DLL شما در کدهای Native قابل استفاده خواهد بود، بلکه براحتی میشه ازاونها از طریق Assembly InterOp ها در محیط Dot Net Framwork هم بهره برد. اما نه، اگر منظورتون نوشتن یه Managed DLL هستش که بشه تو همه زبونها تحت dotNet Framework ازش استفاده کرد، که خوب هیچ کار خاصی نباید انجام بدین. اما نه، اگه قراره Managed DLL شما از طریق کد Native مورد هدف قرار بگیره، باید از یه Wrapper استفاده کنید (اگر درست بخاطر بیارم، این مساله عنوان یکی از مقالات مجله MSDN در سالهای گذشته بوده).

پاورقی:
به نظر من صحیح پرسیدن یک سوال، طی کردن نیمی از مسیر رسیدن به پاسخ هست.

PC2st
سه شنبه 16 مرداد 1386, 17:51 عصر
مطمئن نیستم ولی فکر کنم اگر در dll ائی که تحت دات نت 2 نوشته شده، از اشیائی که فقط در دات نت 2 وجود داره، استفاده نکنه، اون dll بتونه تحت دات نت 1 هم کار کنه.

Mohammadreza Heidari
سه شنبه 16 مرداد 1386, 18:08 عصر
من هم همین احتمال رو میدم ولی به نام گذاری متغیر ها هم دقت کن چون وی بی حروف بزرگ و کوچک فرقی نمیزاره .

choobin84
سه شنبه 16 مرداد 1386, 21:48 عصر
همانطور که mohammad272005 عزیز گفت، شما با نسخه ی بعدی یه dll نوشتی و میخوای تو نسخه ی قبلی اجرا کنی، چنین چیزی غیر ممکنه، ولی اگه با یکی از زبانهای دات نت dll نوشتی مثلا سی شارپ و میخوای توی vb.net استفاده کنی، باید مواظب باشی که از متغیر های unsigned استفاده نکنی، چون توی ویبی support نمیشه و تضمینی برای اجرای صحیح برنامه ات نیست.

در ویژوال استودیو دات نت می وان برنامه هایی نوشت که بدون نصب دات نت فرم ورک روی یه سیستم دیگه کار بده ، این به قیمت از دست دادن کلاسها و کامپوننت های دات نت هست، متاسفانه اسم فنی این نوع برنامه نویسی را نمی دونم (فکر کنم برنامه نویسی Managed و UnManaged باشه) یعنی می توان برنامه ای با وی بی دات نت نوشت و با وی بی 6 باز کرد.

متغیر Unsinged یعنی چی؟

PC2st
سه شنبه 16 مرداد 1386, 22:12 عصر
متغیر unsigned یعنی متغیرهای بدون علامت...
مثلا متغیر از نوع byte بصورت unsigned است چون از 0 تا 255 است و اعداد منفی در آن وجود ندارد.
ولی متغیر از نوع sbyte بصورت signed است و از 128- شروع شده تا 127 ادامه دارد.

Amir Oveisi
سه شنبه 16 مرداد 1386, 22:40 عصر
برای اطمینان از اینکه dll نوشته شده با یه زبانNET. تو همه بان های تحت NET. کار کنه بهتره که اون dll رو بصورت CLS-Compliant (اگه درست نوشته باشم) کامپایل کنید.

golihaghighi
پنج شنبه 18 مرداد 1386, 12:44 عصر
سلام.
ما چیزی به اسم dotnet 2005 نداریم!

ممنون از تذکر سازنده شما