2013-01-13 28 views
6

को लक्षित करना मैंने हाल ही में विजुअल स्टूडियो एक्सप्रेस 2010 से विंडोज डेस्कटॉप के लिए विजुअल स्टूडियो 2012 एक्सप्रेस में अपग्रेड किया है। मैं विंडोज एक्सपी को लक्षित करने की संगतता की पिछली कमी के बारे में जानता हूं, लेकिन सोचा कि इसे अद्यतन 1 (जिसे मैंने इंस्टॉल किया है) द्वारा हल किया गया था।विंडोज डेस्कटॉप के लिए एमएस विजुअल स्टूडियो 2012 एक्सप्रेस - विंडोज एक्सपी

हालांकि, मुझे अभी भी 2012 एक्सप्रेस का उपयोग करके संकलित किए गए सी ++ अनुप्रयोगों के साथ विन XP को लक्षित करने में कठिनाई हो रही है। मैंने प्लेटफार्म टूलसेट को "विजुअल स्टूडियो 2012 - विंडोज एक्सपी (v110_xp)" पर सेट किया है, लेकिन इससे कोई फर्क नहीं पड़ता है। जब मैं अपने विंडोज एक्सपी सिस्टम (मैं वर्चुअलबॉक्स के माध्यम से विंडोज एक्सपी चलाता हूं) पर अपना संकलित एप्लिकेशन चलाने की कोशिश करता हूं, तो मुझे एक त्रुटि मिलती है कि मेरा एप्लिकेशन "वैध Win32 एप्लिकेशन नहीं है।"

मैंने "नो कॉमन लैंग्वेज रनटाइम सपोर्ट" और रनटाइम लाइब्रेरी को "मल्टी-थ्रेडेड (/ एमटी)" में सीएलआर समर्थन स्थापित करने का भी प्रयास किया है।

यहां तक ​​कि एक बहुत ही बुनियादी खाली सी ++ निम्नलिखित कोड का उपयोग कर परियोजना के साथ

, मैं सिर्फ यह XP पर चलाने के लिए प्राप्त कर सकते हैं:

#define _WIN32_WINNT 0x0501 
#define WINVER 0x0501 
#define NTDDI_VERSION 0x0501 

#include <iostream> 

int main() 
{ 
    std::cout << "TEST" << std::endl; 

    std::cout << std::endl << std::endl << "Press ENTER to close this window."; 
    std::cin.get(); 
    return 0; 
} 

किसी को भी मुझे बता सकते हैं, जहां मैं अपने संकलक के साथ गलत जा रहा हूँ/परियोजना सेटिंग्स?

पी। मैंने अपने एक्सपी वर्चुअल मशीन पर एमएस वीसी ++ 2010 और 2012 पुनर्वितरण योग्य पैकेज स्थापित किए हैं। विजुअल स्टूडियो एक्सप्रेस 2010 के साथ संकलित किए गए एप्लिकेशन मेरी एक्सपी वर्चुअल मशीन पर ठीक काम करते हैं।

+0

बिल्ड -> कॉन्फ़िगरेशन प्रबंधक में अपना लक्षित प्लेटफ़ॉर्म देखें। – shf301

+0

आप निश्चित रूप से XP पर वीसी 10 टूलचेन के साथ संकलित प्रोग्राम चला सकते हैं। यह अनिवार्य रूप से वीएस 2010 के साथ संकलन जैसा ही है, लेकिन आपने यह नहीं बताया कि आपको प्रश्न में वीसी 11 टूलचेन की आवश्यकता है। –

+0

@ shf301 - लक्ष्य प्लेटफ़ॉर्म Win32 है। – Colin

उत्तर

0

संदेश यह इंगित कर रहा है कि आपका निर्माण 32 बिट एप्लिकेशन का उत्पादन नहीं कर रहा है - यदि यह एक संस्करण निर्भर API था, उदाहरण के लिए, आपको एक और त्रुटि दिखाई देगी जो दर्शाती है कि प्रतीक नहीं मिला। चूंकि आपने संकेत दिया है कि आप कॉन्फ़िगरेशन मैनेजर में सही लक्ष्य प्लेटफॉर्म का उपयोग कर रहे हैं, यह सुनिश्चित करने के लिए कि आपके पास विवादित तर्क या डिफ़ॉल्ट नहीं हैं, अपने प्रॉपर्टी एक्सप्लोरर को जांचें। यदि आप विकल्प/मशीन: X64 के साथ लिंक देखते हैं, तो आपको समस्या मिली है।

यदि यह काम नहीं करता है, तो मुझे लगता है कि आप Sysinternals प्रक्रिया एक्सप्लोरर को चलाने का प्रयास कर सकते हैं यह देखने के लिए कि कौन सी सीएल/लिंक वास्तव में किस तर्क के साथ लॉन्च की जा रही हैं। उम्मीद है की वो मदद करदे।

1

चेक अपनी परियोजना के "विन्यास गुण ->लिंकर ->सिस्टम ->सबसिस्टम" गुण।
यदि खाली है, तो इसे (/SUBSYSTEM:CONSOLE) या (/SUBSYSTEM:WINDOWS) से भरें।

1

यह काम करता है:

विन्यास गुण -> लिंकर -> सिस्टम -> सबसिस्टम = /सबसिस्टम: WINDOWS

विन्यास गुण -> सामान्य -> ​​मंच उपकरण सेट -> SubsystemVisual Studio 2012 - Windows XP (v110_xp)

दृश्य स्टूडियो का उपयोग करते हुए 2012 एक्सप्रेस अद्यतन 3.

1

जीएनयू जीसीसी उपकरण श्रृंखला का उपयोग करें, भाई, जो mingw के साथ redistrebuted। एमएसवीएस वास्तव में निर्भरता को कम करता है, लेकिन उनमें से कुछ अभी भी exe में रहते हैं। छोटे exe आकार और स्थिर संगतता के साथ, पूर्ण स्थिर लिंकिंग जीसीसी suports में बस संकलन।