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

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

  1. #1
    VIP آواتار رضا عربلو
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    1,597

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

    آیا می توان از اسمبلی های دات نت درون اپلیکیشن هایی نیتیو نظیر دلفی یا MFC استفاده کرد؟

    جستجوهایی نیز انجام داده ام مثل :
    How to call a managed DLL from native Visual C++‎ code in Visual Studio.NET or in Visual Studio 2005
    ولی متاسفانه کدی که با مثال بالا بدست می آید را می توان با ILDASM ببینم و این یعنی کد من نیتیو باقی نمی ماند.

    اگر منبعی در این زمینه سراغ دارید لطفاً معرفی نمایید.

    در ضمن تمام جستجوهای من به وبژگی که در زبان ++C وجود دارد اشاره می کنند. و به همین دلیل اگر زبان ++C این قابلیت را داشته باشد می خواهم فرا بگیرم.

    با تشکر.
    اگر Net. نمی دانید وارد نشوید.

  2. #2
    کاربر دائمی آواتار ICEMAN
    تاریخ عضویت
    تیر 1383
    محل زندگی
    Hyper-V
    پست
    476
    من زیاد با .Net اشنایی ندارم ولی فکر نمیکنم منطقی باشه IL ، Native !!!

  3. #3
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    ولی متاسفانه کدی که با مثال بالا بدست می آید را می توان با ILDASM ببینم و این یعنی کد من نیتیو باقی نمی ماند.
    با C++‎/cli هم میشه کدهای native و هم کدهای managed داشت و به عبارتی اینها رو با هم ادغام کرد. کدهای native بعد از کامپایل هم هنوز native هستند. میشه از کدها و data type های native از طریق کدهای managed استفاده کرد (بدون نیاز به کار خاصی) اما نمیشه (بطور معمول) از کدهای managed از طریق کدهای native استفاده کرد و نیاز به انجام دادن یک کار خاصی هست که در لینکی که دادی، توضیحات لازم رو داده (و من از این قابلیت بی اطلاع بودم ).

    کامپایلر vC++‎.net با گرفتن بعضی از پارامترها، حق انتخاب به برنامه نویس میده که برنامه اش رو در چه حالتی کامپایل کنه، اگه از پارامتر clr/ استفاده بشه، برنامه امکان استفاده از کد native و managed رو با هم داره. اگه با پارامتر clr:safe/ استفاده بشه، فقط امکان استفاده از کدهای managed هست (مثل سی# و بیسیک.نت)، اگه با پارامتر clr:pure/ باشه، برنامه در حالت managed اما فقط امکان استفاده از data type های native هست. و اگه هیچ پارامتر بخصوصی در این زمینه مشخص نشه، برنامه بصورت کاملا native کامپایل میشه.

    اگر منبعی در این زمینه سراغ دارید لطفاً معرفی نمایید.
    من کتاب Apress Pro Visual C++‎/CLI and the .NET 2.0 Platform - Dec 2005 رو خوندم و خوب بود. (حجم pdf اش 23 مگابایته) (شاید بشه کتاب بهتری هم پیدا کرد)

  4. #4
    شما چند راه دارید:
    1) نوشتن کدهای .Net توسط #C و غیره و سپس رجیستر کردن آن ها برای COM interop تا بتوانید به صورت COM در برنامه native خود در ++C از آن ها کنید.
    (که در مقاله ای که شما ذکر کردید مطرح شده است)

    2) استفاده از C++‎/CLI که هدف اصلی ارائه این قابلیت نیز ، همین ترکیب کدهای Native خود در ++C با unmanaged هست و تقریبا تمامی قابلیت ها را در اختیار شما قرار می دهد (اما به هر حال برنامه شما دات نتی می شود)؛ توضیحات را هم که جناب PC2st.ir دادند.

    علاوه بر کتاب فوق ، من کتاب زیر را هم پیشنهاد می کنم که هدف آن همین آشنایی افراد با قابلیت ترکیب دو شیوه در ++C هست:
    Beginning Visual C++‎ 2005 ( Ivor Horton) Wrox

    ولی متاسفانه کدی که با مثال بالا بدست می آید را می توان با ILDASM ببینم و این یعنی کد من نیتیو باقی نمی ماند.
    منظورتان کدام کدها در مقاله هست ، manged dll یا C++‎ client؟

  5. #5
    VIP آواتار رضا عربلو
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    1,597
    منظورم CPPClient بود. خیلی راحت می توانم با ildasm ببینمش.
    من را به شک انداختید به همین دلیل طبق مراحلی که در لینک 1 آورده شده است آنرا ساختم:
    فایل های ضمیمه فایل های ضمیمه
    اگر Net. نمی دانید وارد نشوید.

  6. #6
    فکر می کردم هدف شما فقط استفاده از قابلیت های دات نت در Native هست ،
    وقتی شما پروژه Native را از طریق CLR با قابلیت های دات نت ترکیب کنید ، پروژه شما دات نتی می شود و هر جا که مبتنی بر CLR باشد پس همین مشکل را دارد.

    اما نکته ای که هنوز اطلاع دقیق ندارم در مورد شیوه interop COM هست ، من حتی از قابلیت های دات نت نیز در dll استفاده کردم و توانستم بدون استفاده از CLR نیز برنامه client که به صورت native هست را کامپایل کنم و درست هم کار می کرد !

    .
    آخرین ویرایش به وسیله Nima_NF : شنبه 18 اسفند 1386 در 23:11 عصر

  7. #7
    VIP آواتار رضا عربلو
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    1,597
    دقیقاً همینطور است.
    هدف من پاسخ دادن به این سوال است که آیا می توان از قابلیت های دات نت در اپلیکیشن های نیتیو استفاده کرد در حالی که اپلیکیشن من همچنان نیتیو باقی بماند؟
    و تصمیم داشتم در صورتی که پاسخ مثبت باشد، سوالات بعدی ام را مطرح کنم.

    در مورد شیوه interop COM نیز با توجه به اینکه بایستی :

    1.Click Project, and then click ProjectName Properties.

    Note ProjectName represents the name of the project.2.Expand Configuration Properties,
    and then click General. 3.Click to select Common Language Runtime Support, Old Syntax (/clr:oldSyntax)
    in the Common Language Runtime support project setting on the right pane, click Apply,
    and then click OK.

    همچنان برنامه بصورت CIL ترجمه می شود.
    اگر Net. نمی دانید وارد نشوید.

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

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