2010-06-30 9 views
11

में 32 बिट एप्लिकेशन को संकलित करने में अनसुलझा बाहरी प्रतीकों तो मैं 32 बिट से 64 बिट तक विरासत ऐप संकलित करने की कोशिश कर रहा हूं .. मैंने इसे इस्तेमाल किए गए सभी libs को फिर से संकलित किया और इसे WIN SDK6.0A में देखा libs के लिए x64 बिट ..विंडोज 64

मैं उपयोग कर रहा हूँ:

  • विजुअल स्टूडियो प्रोफेशनल संस्करण 2008
  • विजुअल C++
  • DotNet फ्रेमवर्क 3.5 एसपी 1
  • Windows सर्वर 2008R2
  • विंडोज एसडीके 6.0a
  • है

Everythings अंत में आ रहा है, लेकिन मैं इन अजीब अपरिभाषित प्रतीक त्रुटियों हो रही है:

error LNK2019: unresolved external symbol InterlockedDecrement referenced in function ... 
error LNK2019: unresolved external symbol InterlockedIncrement referenced in function ... 
error LNK2019: unresolved external symbol GetModuleBaseName referenced in ... 
error LNK2019: unresolved external symbol EnumProcessModules referenced in ... 
error LNK2019: unresolved external symbol EnumProcesses referenced in ... 
error LNK2019: unresolved external symbol GetProcessMemoryInfo referenced 

समस्या इन सभी एसडीके से सामान जीत रहे हैं। InterlockedDec और InterlockedInc kernel32.lib से आ रहे हैं GetModuleBaseName, EnumProcessModules, EnumProcesses, GetProcessMemoryInfo psapi.h में हैं, लेकिन यह भी kernel32.lib या psapi.lib

मैं सी जाँच: Program Files \ माइक्रोसॉफ्ट SDKs \ Windows \ v6 \ .0 ए \ लिब \ x64 और दोनों libs kernel32.lib और psapi.lib वहाँ हैं।

यह निश्चित रूप से सही जगह पर libs को देखता है। मैंने चालू/VERBOSE चालू किया: LIB और यह सही फ़ोल्डर को इंगित करता है।

तो मैं वास्तव में उलझन में हूं कि उन्हें क्यों नहीं ढूंढ रहा है।

कोई विचार ???

धन्यवाद

उत्तर

13

तो मैं अंत में यह समझ से बाहर, थोड़े ... यह psapi.lib

परियोजना में> Linker-> अतिरिक्त निर्भरता खोजने के बजाय सिर्फ psapi.lib कह मैं इसे करने के लिए पूरा पथ दिया और एकदम चमक यह काम किया ... वास्तव में यह सुनिश्चित नहीं है कि यह पहले इसे क्यों ढूंढने में विफल रहा लेकिन ओह अच्छी तरह से ...

+6

यदि आप एमएसवीसी का उपयोग कर रहे हैं तो आप स्रोत से जोड़ने के लिए '#pragma टिप्पणी (lib," psapi.lib ")' का उपयोग कर सकते हैं कोड –

+0

इंतजार क्या डब्ल्यू बीमार यह [#pragma टिप्पणी (lib, "psapi.lib")] ??? – grobartn

1

यह बहुत लंबे शॉट (और मैं वास्तव में नहीं समझते कि इस यह है), लेकिन हो सकता है हेडर ठीक से C++ संकलन के लिए निर्वासन 'सी' के साथ पहरा नहीं कर रहे हैं? क्या आप सिस्टम हेडर समेत हैं या सिर्फ फ़ंक्शंस घोषित कर रहे हैं?

+0

नहीं :(वे सब निर्वासन हो रही है वी.एस. में Linker-> इनपुट-> अतिरिक्त निर्भरता में psapi.lib जोड़ने के बाद हल और सबकुछ .... – grobartn

+0

क्या आपने पूर्ण पुनर्निर्माण की कोशिश की है? मैंने देखा कि वीसी ++ समय-समय पर "भ्रमित" हो जाता है (यह शायद प्रोग्राम डेटाबेस को गड़बड़ कर देता है) और पूर्ण पुनर्निर्माण आमतौर पर मदद करता है। मैं सभी * .obj, * .exe और * .pdb पहले से ही, ... – Tomek

+0

ने बहुत बार कुछ भी नहीं किया .... – grobartn

1

क्या आप अपना संकलन और लिंक कमांड लाइन पोस्ट कर सकते हैं, और आपके कोड में किसी भी # डीफ़ को पोस्ट कर सकते हैं?

क्या ऐसा होता है यदि आप स्क्रैच से एक साधारण प्रोजेक्ट करते हैं जो केवल उन तरीकों में से एक को कॉल करता है?

1

रिकॉर्ड के लिए: एक ही समस्या, अलग समाधान; मैं निर्देशिका

psapi 

Linker/General/Additional Library Directory 

की सूची इस वर्ष VS2005 मंच एसडीके psapi.lib के उपयोग के परिणामस्वरूप में जोड़ा के लिए एक प्रवेश किया था (यह केवल 86 था, कोई x64 संस्करण)। प्रविष्टि को हटाने के बाद स्थापित WinSDK x64/psapi.lib से सही lib अब उपयोग किया जाता है। तो पुराने & नए एसडीके के मिश्रण/ऑर्डरिंग के लिए नजर रखें! स्पष्ट रूप से पूरा पथ भी काम करेगा लेकिन जब आप एकाधिक मशीनों पर प्रोजेक्ट का उपयोग करते हैं तो समस्या हो सकती है।

0

मेरे मामले में (VS2012 के लिए VS2008 से माइग्रेट), मुद्दा 2012

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

  • कोई संबंधित समस्या नहीं^_^