2012-12-09 12 views
5

मैंने वीएस 2012 पेशेवर और एक्सपी अपडेट भी स्थापित किया। मैंने अपनी प्रोजेक्ट v110_xp के साथ वीएस 2012 पर प्लेटफॉर्म टूलसेट के रूप में बनाया है। मेरी प्रोजेक्ट का। एमएसआई पैकेज विन 7 पर ठीक इंस्टॉल कर रहा है लेकिन Win XP SP3 पर विफल रहा है। XP SP3 पर रिपोर्ट की गई त्रुटि है -वीएस 2012 - एक्सपी मुद्दे

"प्रक्रिया प्रवेश बिंदु FlushProcessWriteBuffers गतिशील लिंक लाइब्रेरी Kernel32.dll में खोजा नहीं जा सका"।

जबकि वीएस 2005 से निर्मित एक ही प्रोजेक्ट एक्सपी एसपी 3 पर ठीक स्थापित कर रहा है। मुझे यकीन नहीं है कि वीएस 2012 पर क्या चल रहा है। _WIN32_WINNT0x0501 पर सेट है। क्या कोई समस्या को हल करने के तरीके के बारे में मार्गदर्शन कर सकता है?

किसी भी मदद की अत्यधिक सराहना की जाती है,

महेश।

+0

एमएसडीएन के अनुसार, यह कार्य Vista + है। – chris

+0

@ क्रिस मैं इसे देखता हूं। लेकिन यह कैसे काम कर रहा है जब वीएस 2005 पर पैकेज बनाया गया है, जो मुझे इस बिंदु पर समझ में नहीं आता है। – Mahesh

+0

क्योंकि VS2005 रनटाइम उस फ़ंक्शन से लिंक करने का प्रयास नहीं करता है। लेकिन वीएस2012 रनटाइम जो आप तैनात करते हैं। –

उत्तर

13

हां, सी रनटाइम FlushProcessWriteBuffers() पर निर्भरता है। Msvcrt110.dll और libcmtl.lib का अद्यतन संस्करण, जिसे आप अपडेट के साथ प्राप्त करते हैं, अब फ़ंक्शन से सीधे लिंक नहीं होते हैं, वे इसे खोजने के लिए GetProcAddress() का उपयोग करते हैं और मिसंग के साथ लंगड़ा करते हैं। तो आपको यह त्रुटि कभी नहीं मिलनी चाहिए।

इतनी अधिक बाधाएं कि आपने msvcrt110.dll के गलत संस्करण को तैनात किया है, जो अपडेट किए गए एक के बजाय पुराना है। आप इसे c: \ windows \ system32 में वापस पा सकते हैं, गुणों को देखें। मेरा संस्करण संस्करण 11.00.51106.1 है, दिनांक 11/5/2012। here के लिए एक अलग इंस्टॉलर उपलब्ध है।

+0

आप सही हैं। मैंने गलत डीएलएस पैक किया। मेरी परियोजना पैकेजिंग के लिए सही डीएलएस का निर्माण और रखरखाव कर रही है। आपको पता है कि यह कैसे जाता है। उम्मीद है कि यह XP पर सफल होगा :) – Mahesh

+0

ठीक है, यह एक और है जिसे अपडेट किया गया था। –

+0

क्षमा करें, समझ में नहीं आया। क्या आप विस्तार से बता सकते हैं? – Mahesh

3

आपके द्वारा इंस्टॉल किए जा रहे वीएस2012 रनटाइम उन कार्यों का उपयोग करता है जो XP में उपलब्ध नहीं हैं। यह एमएस आलेख देखें: Targeting Windows XP with C++ in Visual Studio 2012 जो अधिक बताता है और कुछ कामकाज प्रदान करता है।

Update 1 VS2012 के लिए समस्या का समाधान करें।

लेकिन अपडेट 1 केवल नए विंडोज प्लेटफार्मों के बारे में नहीं है। यह भी आप दृश्य स्टूडियो में देशी सी ++ अनुप्रयोगों के साथ Windows XP को लक्षित करने के 2012.

आप अद्यतन 1 के साथ निर्माण कर रहे हैं और अभी भी तो समस्याओं का सामना कर मुझे लगता है कि आप तारीख क्रम के बाहर स्थापित कर रहे हैं, तो सक्षम बनाता है। आपको अद्यतन 1 के साथ दिए गए रनटाइम को तैनात करने की आवश्यकता है।

+1

एक अद्यतन था। इसके लिए अब एक कंपाइलर है। http://www.microsoft.com/visualstudio/eng/visual-studio-update#story-update-1 – chris

+0

@ डेविड आपने मुझे एक संकेत दिया। मैंने अपने .msi में सी, सी ++ रनटाइम को पैक किया है, जो XP के लिए समर्थित नवीनतम नहीं हैं।मुझे देखने दें कि समर्थित सी, सी ++ रनटाइम होने के बाद यह कैसा चल रहा है। लेकिन किसी भी तरह से फ़ंक्शन Kernel32.dll में देखा जाता है और सी, सी ++ रनटाइम में नहीं। मैं किसी भी तरह से कोशिश करूंगा। – Mahesh

+0

@ माहेश मेरा अंतिम अनुच्छेद वही कहता है जैसा आपने अभी कहा था। सी रनटाइम जिसे आप तैनात कर रहे हैं वह एक विंडोज एपीआई फ़ंक्शन की तलाश में है जो XP में मौजूद नहीं है। वह एपीआई फ़ंक्शन कर्नेल 32 में रहता है, लेकिन केवल Vista और ऊपर में रहता है। तो यह रनटाइम कर्नेल 32 में एक फ़ंक्शन लोड करने का प्रयास कर रहा है जो XP पर मौजूद नहीं है। समस्या रनटाइम में है। तथ्य यह है कि त्रुटि संदेश कर्नेल 32 का उल्लेख करता है इसका मतलब यह नहीं है कि समस्या kernel32 में निहित है। –

0

आप अपने इंस्टालर में अपनी विकास मशीन (प्रोग्राम फाइल \ सामान्य फाइल \ मर्ज मॉड्यूल) से वीसी 11 मर्ज मॉड्यूल सहित इसे हल कर सकते हैं। अपने इंस्टॉलर में रेडिस्ट एक्सई चलाने से कहीं अधिक आसान है।

आप WIX का उपयोग करते हैं: merge module addition

मैं सर्वर 03, xp64 और xp32 पर परीक्षण किया है।

संबंधित मुद्दे