जब मैं Visual Studio में C ++ प्रोजेक्ट संकलित करता हूं तो "LNK1104: 'फ़ाइल' C: \ Program.obj 'क्यों नहीं खुल सकती?


117

मैंने Visual Studio 2008 में एक नया C ++ प्रोजेक्ट बनाया है। अभी तक कोई कोड नहीं लिखा गया है; केवल प्रोजेक्ट सेटिंग बदल दी गई हैं।

जब मैं प्रोजेक्ट संकलित करता हूं, तो मुझे निम्नलिखित घातक त्रुटि प्राप्त होती है:

घातक त्रुटि LNK1104: 'C: \ Program.obj' फ़ाइल नहीं खोल सकता

जवाबों:


153

यह विशेष रूप से एक समस्या है जो अपने रास्ते में रिक्त स्थान था एक lib फ़ाइल के लिए निर्भरता निर्दिष्ट करने के कारण होता है। परियोजना को सही ढंग से संकलित करने के लिए पथ को उद्धरणों से घिरा होना चाहिए।

पर विन्यास गुण -> लिंकर -> इनपुट परियोजना के गुणों का टैब, वहाँ एक है अतिरिक्त निर्भरता संपत्ति। इस गुण को निम्न से बदलकर यह समस्या ठीक की गई:

C: \ Program Files \ sofware sdk \ lib \ Library.lib

सेवा:

"C: \ Program Files \ sofware sdk \ lib \ Library.lib"

जहाँ मैंने उद्धरण जोड़े।


17
भगवान आपने सिर्फ दो दिन की बगिया को 30 सेकंड के लिए लटका दिया है :)
jb।

10
मुझे भी यही समस्या थी। यदि आपका लिंकर सही है, लेकिन आपकी कामगार निर्देशिका गलत तरीके से सेट की गई है तो वही त्रुटि सामने आ सकती है। कॉन्फ़िगरेशन गुणों में देखने का प्रयास करें -> VC ++ निर्देशिकाएं -> लाइब्रेरी निर्देशिका यह देखने के लिए कि क्या आपने लाइब्रेरी को सही तरीके से सेट किया है। कभी-कभी lib फ़ोल्डर में x86 और x64 फ़ोल्डर होते हैं। आपको इसे उन दोनों में से किसी एक (अपने संकलक के आधार पर) फ़ोल्डर के बजाय दोनों पर सेट करना होगा।
M4st3rM1nd

1
बाद में अर्धविराम लगाना न भूलें "C:\Program Files\sofware sdk\lib\library.lib";वसीयत की अनुपस्थिति भी परियोजना को गलत तरीके से संकलित करने का कारण बनेगी।
रोशियोली

1
विजुअल स्टूडियो 2005 (विंडोज 8.1 पर) का उपयोग करके ओपनसीवी बनाने की कोशिश करते समय यह समस्या थी ... और इसे हल किया। महान!
AlainD

1
मैंने इसकी कोशिश की और यह मेरे काम नहीं आया। "Qt5Xmld.lib"? "Qt5XmlPatternsd.lib"? "Qt5Cored.lib"?% (अतिरिक्त निर्भरता) -मैं किस चीज का पीछा करूं ?
एसटीएफ

65

यह तब भी हो सकता है जब फ़ाइल अभी भी चल रही है।

: -1: त्रुटि: LNK1104: 'डिबग \ ****' फ़ाइल नहीं खोल सकता।


4
यह मेरी समस्या भी थी!
कामरान बिगली

1
मुझे यह एमएस सिक्योरिटी एसेंशियल द्वारा फाइल को बंद रखने के कारण मिलता है।
22

हाँ, पिछले कंसोल विंडो को बंद कर दिया और अचानक लीब को पढ़ा जा सकता है।
कारी

15

दृश्य स्टूडियो को बंद करने और फिर से खोलने के बाद मेरे लिए समस्या दूर हो गई। निश्चित नहीं है कि समस्या क्यों हुई, लेकिन यह एक शॉट के लायक हो सकता है।

यह वीएस 2013 परम, विंडोज 8.1 पर था।


4
आह, Microsoft ... हमारी पहली कोशिश हमेशा करीब होनी चाहिए और फिर से खुलनी चाहिए (या बिजली बंद होनी चाहिए) - जब हम ऐसा करते हैं तो कई रहस्यमय कीड़े चले जाते हैं ...
लियोनार्डो अल्वेस मचाडो

1
मैं इतना शर्मनाक महसूस करता हूं कि यह समाधान मेरी समस्या को हल कर सकता है। अब, मैं अपने दोस्तों और परिवार से मिलने के लिए बाहर नहीं जा सकता।
javaLover

2
आपको कैरोल जैसी ही समस्या थी।
आमोद

10

यह भी जांचें कि आपने इसे चालू नहीं किया है: कॉन्फ़िगरेशन गुण -> C / C ++ -> Preprocessor -> Preprocess to a File


मेरे मामले में यह भी मुद्दा था, फिर भी, अगर मैं इस झंडे को चालू करने की इच्छा रखता हूं (Prepossessed फ़ाइल देखने के लिए) तो मुझे क्या करना चाहिए?
गाइ अवराम

2
आपको यहां कुछ वर्कअराउंड्स मिले हैं: प्रीप्रोसेड कोड को आउटपुट कैसे करें और इसे (विजुअल स्टूडियो) कैसे संकलित करें और यहां: प्रोजेक्ट को (वीएस 2008) को / पी तर्क (एक फाइल के लिए प्रीप्रोसेस) के साथ संकलित नहीं करता है । लेकिन अनिवार्य रूप से यह एक संकलक विकल्प है, इसलिए यह दोनों को नहीं बल्कि दोनों को करेगा।
असफ लेवी

4

मुझे एक ही समस्या थी। यह अतिरिक्त लाइब्रेरी पथ के फ़ोल्डर के नाम पर "," के कारण था। अतिरिक्त लाइब्रेरी पथ को बदलकर इसे हल किया गया।



3

मेरे मामले में यह गलत निर्देश के संदर्भ का मामला था। प्रोजेक्ट ने दूसरे प्रोजेक्ट के आउटपुट को संदर्भित किया लेकिन बाद वाले ने उस फ़ाइल का आउटपुट नहीं किया जहां पूर्व की तलाश थी।


3

समाधान 1 (मेरे मामले के लिए): विंडोज़ एक्सप्लोरर प्रक्रिया को पुनरारंभ करें (हाँ, विंडोज़ फ़ाइल प्रबंधक)।

समाधान 2:

  1. Visual Studio को बंद करें। विंडोज लॉगऑफ़
  2. लॉगऑन, विजुअल स्टूडियो को फिर से खोलें
  3. हमेशा की तरह बनाएँ। यह अब समस्याग्रस्त फ़ाइल बनाता है और उसका उपयोग कर सकता है।

मुझे लगता है कि कभी-कभी फाइल सिस्टम या जो भी इसे नियंत्रित कर रहा है वह इसकी अनुमतियों के साथ खो जाता है। विंडोज़ सत्र को फिर से शुरू करने से पहले, ज़ोंबी msbuild32.exeप्रक्रियाओं को मारने की कोशिश की , दृश्य स्टूडियो को पुनरारंभ करें, समस्या फ़ाइल को दिखाने पर भी कोई भी नहीं देखें। कोई कॉन्फ़िगरेशन समस्याएँ बनाएँ। यह अब और तब होता है। विंडोज में कुछ आंतरिक चीज ठीक नहीं होती है, पुनरारंभ की आवश्यकता होती है।


मुझे VS2019 की यह समस्या थी ... इसने इसे ठीक कर दिया ... यह आश्चर्यजनक है कि कीड़े बने रहते हैं। thx
JHBonarius

2

मेरे पास एक ही त्रुटि थी, बस एक Nuget पैकेज के साथ मैंने स्थापित किया था (एक जो केवल हेडर नहीं है) और फिर अनइंस्टॉल करने की कोशिश की।
मेरे लिए क्या गलत था कि मैं अभी भी पैकेज के लिए एक हेडर शामिल कर रहा था जिसे मैंने अपनी एक .cpp फाइलों में संस्थापित किया था (बहुत मूर्खतापूर्ण, हाँ)।
मैंने इसमें अतिरिक्त पुस्तकालय निर्देशिका लिंक को भी हटा दियाProject -> Properties -> Linker -> General , लेकिन निश्चित रूप से कोई फायदा नहीं हुआ क्योंकि मैं अभी भी गैर-मौजूद हेडर को संदर्भित करने की कोशिश कर रहा था।

इस मामले में निश्चित रूप से एक भ्रामक त्रुटि संदेश है, क्योंकि हेडर नाम था, <boost/filesystem.hpp>लेकिन त्रुटि ने मुझे "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"और कोई लाइन नंबर या कुछ भी दिया।


2

मुझे भी यही समस्या थी, लेकिन मेरे मामले का समाधान उत्तर में सूचीबद्ध नहीं है। मेरे एंटीवायरस प्रोग्राम (AVG) ने फ़ाइल MyProg.exeको वायरस के रूप में निर्धारित किया और इसे 'वायरस स्टोरहाउस' में डाल दिया। आपको इस स्टोरहाउस की जांच करने की आवश्यकता है और यदि फ़ाइल वहां है - तो बस इसे पुनर्स्थापित करें। इसने मेरी मदद की।


1

एक असेंबली प्रोजेक्ट के लिए (ProjectName -> बिल्ड डिपेंडेंसी -> बिल्ड कस्टमाइज़ेशन -> मेस्म (चयनित)), जेनरेट प्रीप्रोसेस सोर्स को सही पर सेट करना मेरे लिए भी समस्या का कारण बना, सेटिंग को क्लियर करते हुए इसे ठीक कर दिया। यहां VS2013।


1

मैं मुख्य निष्पादन योग्य लापता के बारे में शिकायत करने वाले लिंकर के साथ एक ही समस्या में चलता हूं। यह हमारे समाधान पोर्ट के दौरान नए विज़ुअल स्टूडियो 2013 के दौरान हुआ । समाधान प्रबंधित और संयुक्त राष्ट्र के प्रबंधित परियोजनाओं / कोड का एक विविध मिश्रण है। समस्या (और ठीक) समाधान फ़ोल्डर में एक लापता app.config फ़ाइल जा रहा है । एक दिन में यह पता लगाने के लिए लिया :(, के रूप में उत्पादन लॉग बहुत मददगार नहीं था।


1

मैंने इस सूची के अनुसार अपनी सभी सेटिंग्स की जाँच की: http://msdn.microsoft.com/en-us/library/ts7eyw4s.aspx#feedback । यह मेरे लिए उपयोगी है और मेरी स्थिति के लिए, मुझे पता चला है कि परियोजनाओं की संपत्तियों की लिंक निर्भरता में दोहरे भाव हैं, जो कि नहीं होना चाहिए।


0

मैं जवाब दे रहा हूं क्योंकि मैं किसी और द्वारा सूचीबद्ध इस विशेष समाधान को नहीं देखता हूं।

जाहिरा तौर पर मेरा एंटीवायरस (Ad-Aware) एक DLL को चिह्नित कर रहा था, मेरी एक परियोजना निर्भर करती है, और इसे हटा रही है। उस निर्देशिका को बाहर करने के बाद भी जहां DLL रहता है, वही व्यवहार तब तक जारी रहा जब तक मैंने अपने कंप्यूटर को पुनरारंभ नहीं किया।


0

मेरे मामले में, मैंने GLM के साथ पिछले गेम इंजन ग्राफिक्स पाठ्यक्रम से गणित पुस्तकालय फ़ाइलों को बदल दिया था। समस्या यह थी कि मैंने उन्हें विजुअल स्टूडियो के सोल्यूशन एक्सप्लोरर के भीतर प्रोजेक्ट में नहीं जोड़ा (भले ही वे प्रोजेक्ट रिपॉजिटरी में थे)।


0

मेरे पास LNK2038 त्रुटि के साथ संयोजन में यह मुद्दा था, इस पोस्ट का पालन ​​किया RELEASE और DEBUG DLLs को अलग करने के लिए। इस प्रक्रिया में मैंने पूरे फ़ोल्डर को साफ़ कर दिया था जहाँ ये निर्भरताएँ रहती थीं।

सौभाग्य से मेरे पास इन सभी फ़ाइलों का बैकअप था, और उस फ़ाइल को प्राप्त किया जिसके लिए यह त्रुटि समस्या को हल करने के लिए DEBUG फ़ोल्डर में वापस फेंक रही थी। त्रुटि कोड किसी तरह से भ्रामक था क्योंकि मुझे इस पोस्ट के उत्तर में से एक से इस टिप पर आने के लिए बहुत समय बिताना था।

उम्मीद है कि यह जवाब, किसी की जरूरत में मदद करता है।


0

मैंने अपने समाधान में एक मौजूदा परियोजना को जोड़कर इसे हल किया , जिसे मैं पहली बार में जोड़ना भूल गया


0

मेरे पास एक ही त्रुटि थी:

fatal error LNK1104: cannot open file 'GTest.lib;'

यह ;अंत में कारण हुआ । यदि आपके पास कई पुस्तकालय हैं, तो उन्हें खाली स्थान (स्पेसबार), कोई अल्पविराम या अर्ध-कॉलोन द्वारा अलग किया जाना चाहिए!

इसलिए ;पुस्तकालयों को सूचीबद्ध करते समय किसी भी अन्य चीज़ का उपयोग न करेंProject properties >> Configuration Properties >> Linker >> Input


0

मैं ऊपर समाधान की कोशिश की, लेकिन मेरे लिए काम नहीं किया। इसलिए मैं exe का नाम बदला और समाधान का पुनर्निर्माण किया। इससे मेरा काम बनता है।


0

विजुअल स्टूडियो 2019 में VC ++ DLL का निर्माण करते समय मुझे यह सटीक त्रुटि मिली:

LNK1104: 'C: \ Program.obj' फ़ाइल नहीं खोल सकता

प्रोजेक्ट प्रॉपर्टीज़> लिंकर> इनपुट> मॉड्यूल डेफिनिशन फ़ाइल के तहत, मैंने एक फ़ाइल को निर्दिष्ट किया था जिसमें फ़ाइल नाम के अंत में एक बेजोड़ डबल-कोट था। बेजोड़ दोहरे उद्धरण को हटाने से समस्या हल हो गई।


0

मार डाला msbuild32.exeऔर फिर से बनाया। इसने मेरे लिए काम किया।


-1

मैंने "विज़ुअल स्टूडियो 2013" के साथ एक ही समस्या को मारा।

LNK1104: cannot open file 'debug\****.exe

विजुअल स्टूडियो को बंद करने और फिर से शुरू करने के बाद इसका समाधान हुआ।


-3

मुझे वही समस्या हो रही थी, मैंने अभी नए प्रोजेक्ट के लिए कोड कॉपी किया है और बिल्ड शुरू किया है। कुछ और त्रुटि आने लगी। त्रुटि C4996: 'fopen': यह फ़ंक्शन या वैरिएबल असुरक्षित हो सकता है। इसके बजाय fopen_s का उपयोग करने पर विचार करें

इस समस्या को फिर से हल करने के लिए, मैंने नीचे दिए गए प्रोजेक्ट के रूप में अपनी एक संपत्ति जोड़ी है। परियोजना -> गुण -> विन्यास संपत्ति -> c / c ++। इस श्रेणी में क्षेत्र का नाम है Preprocessor परिभाषाएँ मैंने इस समस्या को हल करने के लिए _CRT_SECURE_NO_WARNINGS जोड़ा है आशा है कि यह मदद करेगा ...

धन्यवाद


इस उत्तर का सिद्धांतिक पद से कोई संबंध नहीं है।
zar

सुरक्षा सुविधाओं को अक्षम करने का उल्लेख नहीं करना बिल्कुल अच्छा विचार नहीं है
मत्ती वीरकुंकेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.