View Full Version : تبدیل win32 به win64 برای کد VC++6
ASKaffash
یک شنبه 27 دی 1388, 10:14 صبح
سلام
تقریبا اکثر تاپیکهای مرتبط را خوندم ولی جواب این سئوالم را پیدا نکردم.
سئوال:
من یک DLL با VC++6 نوشتم و در تمام ویندوزهای 32 بیتی به راحتی استفاده میکنم حالا روی ویندوز های 64 بیتی اصلا نمی تواند DLL را Load کند با چه نسخه ای یا چه روشی باید این DLL را به یک 64 بیتی Compile کنم ترجیحا مایکروسافتی و VC++ باشد
Nima_NF
یک شنبه 27 دی 1388, 10:42 صبح
نسخه 2005 یا 2008 کامپایلر VC++ را نصب کنید. دقت کنید که هنگام نصب باید کامپایلرها و ابراز X64 را نیز نصب کنید.
سپس همان پروژه win32 خود را باز کرده و از قسمت configure برای کامپایل به جای win32 حالت x64 را برای کامپایل انتخاب کنید.
توجه کنید که برای x64 باید برخی از متغیرها،توابع و مخصوصا اشاره گرهای پیش فرض را با معادل 32/654 بیت جایگزین کنید. فرضا SetWindowLongPtr به جای SetWindowLong و UINT_PTR به جای شاره گر به int و ...
کلا زیاد تغییر نیاز نیست، اگر در تنظیمات کامپایلر فعال کرده باشید اکثر اخطارهای مورد نیاز به شما داده می شود.
ASKaffash
سه شنبه 06 بهمن 1388, 08:18 صبح
سلام به دوستان تالار
من کارهائی که گفته شده بود را انجام دادم ولی DLL ای که دات نت برایم ایجاد کرده Native نیست و به راحتی Reflect میشود لطفا راهنمائی کنید برای ایجاد Native برای 64 بیتی راه دات نتی به شکل Native چگونه است ؟ یا با VC++6 چگونه میتوان 64 بیتی Compile کرد ؟
Nima_NF
سه شنبه 06 بهمن 1388, 14:32 عصر
اگر کدهای dll شما دات نتی هست، نمی توانید آن را به native کامپایل کنید.
کامپایلر VC++6 قدیمی هست و امکانات 64 بیت را ندارد (آن زمان هنوز بحث 64 بیت چندان وجود نداشت).
باید از نسخه های جدید با قابلیت 64 بیت استفاده کنید.
ضمنا اگر DLL شما native هست، توسط VC++2008 پروژه را باز کنید، به شکل native کامپایل می شود. تا زیمانی که خودتان دستکاری نکرده باشید کامپایلر اصلا .NET را در نظر نمی گیرد.
تنها در یک صورت هست که پروژه به .NET تبدیل می شود و آن در صورتی هست که شما سوییچ clr را در تنظیمات کامپایلر فعال کرده باشید، یا اینکه پروژه را به نوع CLR تغییر داده باشید.
ASKaffash
چهارشنبه 07 بهمن 1388, 08:33 صبح
سلام
بله کاملا حق با شما بود و اشتباه من این بود که پروژه جدید می ساختم به این دلیل پیش فرض Native نبود
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.