none
Visual Studio 2010 : קימפול פרויקט ל64-ביט RRS feed

  • שאלה

  • לאחרונה הוטלה עליי משימה של העברת פרויקטים רבים לפלטפורמה של 64-ביט.
    אני עובד כדרך Visual Studio 2010 Premium וכדיי לבצע קימפול של פרויקט לפלטפורמה של 64-ביט אני מסתמך על המידע שבדף הבא :

    http://msdn.microsoft.com/en-us/library/9yb4317s.aspx

    השאלה היא, האם הפעולות כאן אכן מספיקות ? או שיש לבצע עוד משהו ?

    מישהו העיר לי שבהגדרות של :
    Property Pages->Configuration Properties->C/C++->Preprocessor->Preprocessor Definitions
    עדיין מוגדר לי הסמל
    WIN32

    ולכן כנראה לא עשיתי את התהליך כולו.
    האם זה נכון ?

    אני שואל זאת ספציפית מכיוון שכעת יש לי 2 פרויקטים A ו - B שאני מעוניין להעביר ל64-ביט.
    פרויקט A מוציא קובץ dll וקובץ lib שפרויקט B מסתמך עליהם.
    את פרויקט A הצלחתי לקמפל כהלכה ל64-ביט ואף להריצו אבל כשאני מנסה לקמפל את פרויקט B אני מקבל את השגיאה הבאה :

    mfcs100d.lib(nolib.obj) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

    אין לי מושג מה הוא קובץ ה - lib הספציפי הזה.

    השתמשתי בתוכנה Dependency Walker ובדקתי את קובץ ה DLL של פרויקט A, נראה שהוא לא מסתמך על אף DLL שאינו 64-ביט.
    בנוסף בדקתי הגדרות נוספות כמו ב Configuration Window, שם הפלטפורמה מכוונת על x64 ובהגדרות של ה Linker->Advanced, ה - Target Machine מכוון על MachineX64.

    האם ייתכן וזה באמת קשור לעניין הזה של ה - Preprocessor ? כך שבעצם לא ביצעתי העברה מלאה ל 64-ביט בהגדרות ולכן יש פנייה ל - mfcs100d.lib (שהוא lib של 32-ביט) ?
    אני יודע שזו שאלה מאוד ספציפית, אבל אולי מישהו יידע.
    תודה.
    • נערך על-ידי The_Mundane יום שלישי 10 ינואר 2012 13:15
    יום שלישי 10 ינואר 2012 12:59

תשובות

  • כן.
    בכל מקרה, פתרתי את הבעייה, היה צריך לשחק שם עם ההגדרות של ה - Library Directories. משום מה הן היו מכוונות על תיקיית קבצי dll ו lib של 32-ביט, למרות שה - inherited values הראו את התיקייה של ה - 64 ביט.
    כמו כן לפי מה שבדקתי אין שום קשר לעניין של ה - Preprocessor.
    • הוצע כתשובה על-ידי pituachMVP, Moderator יום רביעי 11 ינואר 2012 17:00
    • סומן כתשובה על-ידי The_Mundane יום חמישי 12 ינואר 2012 09:48
    יום רביעי 11 ינואר 2012 07:39

כל התגובות

  • אני חושב שאולי הבעייה נעוצה בהגדרות הבאות :
    Property Pages->Configuration Properties->VC++ Directories->Executable Directories.

    הערך הראשון שיש לי שם הוא
    $(VCInstallDir)bin\x86_amd64

    עם זאת, יכול להיות שאני צריך לשנות את זה להיות amd64, אמנם אני לא ממש יודע איך.
    יום שלישי 10 ינואר 2012 13:20
  • בדיקת שפיות: האם המכונה שלך עם מערכת הפעלה 64 ביט?
    יום שלישי 10 ינואר 2012 15:57
  • כן.
    בכל מקרה, פתרתי את הבעייה, היה צריך לשחק שם עם ההגדרות של ה - Library Directories. משום מה הן היו מכוונות על תיקיית קבצי dll ו lib של 32-ביט, למרות שה - inherited values הראו את התיקייה של ה - 64 ביט.
    כמו כן לפי מה שבדקתי אין שום קשר לעניין של ה - Preprocessor.
    • הוצע כתשובה על-ידי pituachMVP, Moderator יום רביעי 11 ינואר 2012 17:00
    • סומן כתשובה על-ידי The_Mundane יום חמישי 12 ינואר 2012 09:48
    יום רביעי 11 ינואר 2012 07:39