# Native Code > برنامه نویسی با C > برنامه نویسی با MFC و ++Visual C > سوال: 32 بیتی کردن برنامه ها در ویندوز 64 بیتی

## mahdi1373

سلام،  
من ویندوز 64 بیتی دارم و با win32 (C++‎) برنامه می نویسم و کامپایلر ام هم  Visual Studio2008 هست. من میخواهم برنامه های 32 بیتی  بنویسم، چطور باید 32 بیتی اش کنم؟
کلا چصور باید تنظیمات مربوط به 32 بیتی یا 64 بیتی بودن برنامه ام را تغییر بدم؟

----------


## mehdi.mousavi

سلام.
توی Visual Studio و هنگامیکه پروژه بازه، روی اسم پروژه Right-Click کنید و سپس Properties رو انتخاب کنید. دکمه Configuration Manager رو بزنید، سپس در قسمت Platform، آیتم New رو انتخاب کنید. در بخش New Platform، یکی از دو گزینه Itanium یا X64 رو انتخاب کنید (بر اساس اینکه Target مورد نظر چی میخواد باشه). در نهایت OK کنید و پروژه رو از اول Compile کنید. لطفا دقت کنید که این کار باعث میشه تا چندین (اگر درست بخاطرم مونده باشه، 5 ) تنظیم دیگه در پروژه بطور خودکار تغییر کنه، از جمله سوئیچ Zi، envx64 و ...

موفق باشید.

----------


## mahdi1373

> سلام.
> توی Visual Studio و هنگامیکه پروژه بازه، روی اسم پروژه Right-Click کنید و سپس Properties رو انتخاب کنید. دکمه Configuration Manager رو بزنید، سپس در قسمت Platform، آیتم New رو انتخاب کنید. در بخش New Platform، یکی از دو گزینه Itanium یا X64 رو انتخاب کنید (بر اساس اینکه Target مورد نظر چی میخواد باشه). در نهایت OK کنید و پروژه رو از اول Compile کنید. لطفا دقت کنید که این کار باعث میشه تا چندین (اگر درست بخاطرم مونده باشه، 5 ) تنظیم دیگه در پروژه بطور خودکار تغییر کنه، از جمله سوئیچ Zi، envx64 و ...
> 
> موفق باشید.


ممنونم، تقریبا درست شد، فقط چند تا مشکل:

-موقعی که در قسمت Platform، آیتم New رو انتخاب می کنم، Itanium نداره. x64 و Win32 و چند تا چیز دیگه راجع به Pocket PC داره. براسی برنامه های 32 و 64 بیتی کدوم رو انتخاب کنم؟

-در قسمت Platform که آیتم New رو انتخاب می کنم، توی صفحه ای که باز میشه زیر New Platform، یک کمبو باکس Copy Setting From داره، اون رو رو چی بزارم؟

-در قسمت Platform که آیتم New رو انتخاب می کنم، توی صفحه ای که باز میشه  زیر New Platform، یک چک باکس Creat New Solution Platform داره، اون رو تیک بزنم یا نه؟

-وقتی برنامه رو با x64 دیباگ می کنم، قبل از اجرای برنامه یک پیغام میده:



ولی وقتی Yes رو می زنم برنامه درست و بصورت 64 بیتی run میشه(از Task Manager فهمیدم). چرا؟

بازم ممنونم.

----------


## هم دانشگاهی

من یه سوال دارم! اگه ساده هست ببخشید :لبخند: 

کلا فرق 32 بیت با 64 بیت چیه ؟ چه فرقی موقع در Debug برنامه میکنه؟ :متفکر:

----------


## mehdi.mousavi

> -موقعی که در قسمت Platform، آیتم New رو انتخاب می کنم، Itanium نداره. x64 و Win32 و چند تا چیز دیگه راجع به Pocket PC داره. براسی برنامه های 32 و 64 بیتی کدوم رو انتخاب کنم؟


سلام.
بهتر که Itanium نداره. چند ماه پیش یکی از کارمندان مایکروسافت اعلام کرد که معماری x64 بقدر کافی Scalable و Reliable هستش، بنابراین Visual Studio 2010، Windows Server 2008 R2 و چند تا دیگه از محصولات مایکروسافت آخرین محصولاتی هستن که از Itanium پشتیبانی میکنن. بنابراین شما هم بهتره از الان روی اون برنامه ریزی نکنید... در هر حال، برای برنامه های 64 بیتی، اون Option رو روی x64 قرار بدید و OK کنید. بعدا در صورت نیاز، میتونید از بخش Configuration Manager گزینه Win32 رو انتخاب کنید تا برنامه بصورت 32 بیتی Compile بشه.




> -در قسمت Platform که آیتم New رو انتخاب می کنم، توی صفحه ای که باز میشه زیر New Platform، یک کمبو باکس Copy Setting From داره، اون رو رو چی بزارم؟


میتونید Empty بذارید، میتونید Win32 بذارید. اگر Empty بذارید، یعنی Setting های دیگه پروژه در حالت 64 بیتی رو خودتون بعدا تعیین خواهید کرد (در صورت نیاز). اگر Win32 بذارید، یعنی مابقی Setting ها از Profile مربوط به برنامه های 32 بیتی کپی بشه. اگر تغییری در تنظیمات پروژه نداده اید، گزینه Empty رو انتخاب کنید.




> -در قسمت Platform که آیتم New رو انتخاب می کنم، توی صفحه ای که باز میشه  زیر New Platform، یک چک باکس Creat New Solution Platform داره، اون رو تیک بزنم یا نه؟


بله، بذارید روشن باشه تا Configuration جدید در لیست Active Solution Platform ظاهر بشه.




> وقتی برنامه رو با x64 دیباگ می کنم، قبل از اجرای برنامه یک پیغام میده: ولی وقتی Yes رو می زنم برنامه درست و بصورت 64 بیتی run میشه(از Task Manager فهمیدم). چرا؟ بازم ممنونم.


لطفا به این آدرس رجوع کنید و موارد ذکر شده رو دونه به دونه روی تنظیمات پروژه اعمال کنید.

موفق باشید.

----------


## mehdi.mousavi

> من یه سوال دارم! اگه ساده هست ببخشید کلا فرق 32 بیت با 64 بیت چیه ؟ چه فرقی موقع در Debug برنامه میکنه؟


سلام.
تفاوت پردازنده های 32 و 64 بیتی رو میتونید اینجا مطالعه کنید. اما تفاوتش در Debug کردن برنامه...

وقتی شما برنامه ای رو Compile می کنید (در Debug Mode)، کامپایلر اطلاعاتی اضافی در مورد برنامه رو در فایلی با دنباله pdb قرار میده. (برای اینکه متوجه بشید این اطلاعات چی هستن و چگونه نگهداری میشن، این مقاله رو مطالعه کنید، اگر چه Matt Pietrek قبلا عنوان کرده بود که من خودم هم نمیدونم ساختار فایلهای PDB چی هستن). چون ساختار پردازنده های 32 و 64 بیتی متفاوته، اطلاعاتی که در PDB ی یک برنامه 64 بیتی Compile شده نگهداری میشه نیز، متفاوت از اطلاعاتی هستش که در PDB ی یک برنامه 32 بیتی نگهداری میشه. این تفاوت ها باعث میشه تا PDB یک برنامه 32 بیتی، برای Debug کردن نسخه 64 بیتی همون برنامه، ناکارآمد باشه.

موفق باشید.

----------


## هم دانشگاهی

ممنونم  :لبخند: 

من وقتی برنامه رو تو VC 2010 اجرا میکنم این پیغام رو میده:

Unable to start program 'C:\Documents and Settings\mahyar\My Documents\Visual Studio 2008\Projects\mahyar\Debug\mahyar.exe'

مشکلش از چیه؟  :متفکر: 
// _________________

باران باش ببار نگو این کاسه مال کیست

----------


## mehdi.mousavi

> من وقتی برنامه رو تو VC 2010 اجرا میکنم این پیغام رو میده:
>  مشکلش از چیه؟


سلام.
لطفا به این آدرس رجوع کنید (پست دوم رو بخونید، Output Directory و Intermediate Directory...)

موفق باشید.

----------


## haririan2

سلام
من یک پروژه دارم که در ویندوز 32 بیتی خیلی عالی دیباگ میشه ولی در ویندوز 64 بیتی امکان اجرای خط به خط و دیباگ آن را ندارم به نظر شما مشکل از چیست ؟
البته در هر دو سیستم یک نوع ویژوال استودیو دارم (2008) و پروژه نیز در 32 بیتی نوشته شده است

----------


## haririan2

خودم حلش کردم مشکل از سرویس پک بود نصب کردم درست شد :)
http://www.microsoft.com/download/en....aspx?id=10986

----------

