বিল্ডে অনুপস্থিত .pch ফাইলটি কীভাবে ঠিক করবেন?


164

আমি যখন ভিজুয়াল স্টুডিওতে আমার সি ++ সলিউশনটি তৈরি করি তখন এটি অভিযোগ করে যে এক্সএক্সএক্সএক্সএক্সএক্স.পিচ ফাইলটি অনুপস্থিত। প্রাক-সংকলিত শিরোনামগুলি ফিরে পাওয়ার জন্য আমি কী সেটিংটি মিস করছি?

সম্পূর্ণতার জন্য সঠিক ত্রুটি এখানে:

Error   1   fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory

1
আপনাকে আরও তথ্য সরবরাহ করতে হবে। আপনি ঠিক কি ত্রুটি পাচ্ছেন? আপনার প্রকল্পটি বর্তমানে কনফিগার করা হয়েছে কীভাবে?
আসফ লাভি

কেবলমাত্র একটি সাধারণ পুনর্নির্মাণ সমস্তই আমার সমস্যার সমাধান করে।
Deqing

উত্তর:


436

দ্রষ্টব্য: আইডিইর পরবর্তী সংস্করণগুলি সম্পর্কিত ফাইলগুলির জন্য ডিফল্ট নামগুলিতে "stdafx" এর পরিবর্তে "pch" ব্যবহার করতে পারে। নীচের নির্দেশে stdafx জন্য pch বিকল্প প্রয়োজন হতে পারে। আমি ক্ষমা প্রার্থনা করছি. এটা আমার দোষ না.

  1. সমাধান এক্সপ্লোরারটিতে আপনার প্রকল্পে ডান ক্লিক করুন।
  2. ড্রপ-ডাউন মেনুর নীচে বৈশিষ্ট্যগুলি ক্লিক করুন।
  3. প্রোপার্টি পৃষ্ঠাগুলির উপরের বামে, ড্রপ-ডাউন মেনু থেকে সমস্ত কনফিগারেশন নির্বাচন করুন।
  4. সি / সি ++ টি ট্রি খুলুন এবং প্রম্পম্পাইল্ড শিরোনামগুলি নির্বাচন করুন
  5. পূর্বনির্ধারিত শিরোলেখ: ব্যবহার নির্বাচন করুন (/ ইউ)
  6. প্রাকম্পম্পাইল শিরোনাম ফাইল ক্ষেত্রটি পূরণ করুন। স্ট্যান্ডার্ডটি হল stdafx.h
  7. ঠিক আছে ক্লিক করুন

  8. যদি আপনার হেডার ফাইলগুলিতে stdafx.h না থাকে তবে এটি সেখানে রেখে দিন। আপনি পূর্বনির্দিষ্ট করতে চান এমন সমস্ত শিরোনাম # এটিকে সম্পাদনা করুন।

  9. আপনার প্রকল্পে stdafx.cpp নামের একটি ফাইল রাখুন। এর শীর্ষে # stdafx.h "অন্তর্ভুক্ত করুন এবং অন্য কিছুই নেই।
  10. সলিউশন এক্সপ্লোরার-এ stdafx.cpp এ ডান ক্লিক করুন। পদক্ষেপ 4 হিসাবে আবার সম্পত্তি ও সমস্ত কনফিগারেশন নির্বাচন করুন ...
  11. ... তবে এবার প্রাকম্পম্পাইল্ড শিরোনাম তৈরি (/ ওয়াইসি) নির্বাচন করুন। এটি কেবলমাত্র একটি ফাইল stdafx.cpp- এ আবদ্ধ হবে।
  12. আপনার সমস্ত উত্স ফাইলের একেবারে শীর্ষে "stdafx.h" অন্তর্ভুক্ত করুন।

ভাগ্যবান 13. আপনার আঙ্গুলগুলি ক্রস করুন এবং বিল্ডটিতে আঘাত করুন।


58
আমি জানতাম না stdafx.cpp এর আলাদা সেটিং থাকা উচিত। দুর্দান্ত উত্তর।
বিশেষজ্ঞ

5
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, কারণ অন্যটির দশটি এবং ১১ টি ধাপ অনুপস্থিত Thanks ধন্যবাদ!
জেবেন্টলে

2
এটি আমার চেয়ে আরও প্রাথমিক উত্তর। পিসিএইচ কাজ করার জন্য পদক্ষেপ 1-7 প্রয়োজনীয়, তবে প্রশ্নটির ত্রুটি বার্তাটি নির্দেশ করে যে এই পদক্ষেপগুলি ইতিমধ্যে সম্পন্ন হয়েছে। OTOH, এটি একটি একক stdafx.pchফাইল ধরেছে, যখন xxxxx.pchপ্রশ্ন থেকে আরও জটিল সমস্যা (মাল্টি-পিসিএইচ সেটআপ) ইঙ্গিত করা হয়েছে।
এমসাল্টার্স

1
এই উত্তরটি সত্যিই দিনটি বাঁচিয়েছিল। ধন্যবাদ।
ম্যাট ক্রেগ

ধন্যবাদ জনাব! নতুন প্রকল্পের জন্য আমার সি / সি ++ আর শিকড়গুলিতে ফিরে যাচ্ছি এবং আমি কিছুটা স্পাজের মতো অনুভব করছি
কলবি আফ্রিকা

59

প্রাকম্পম্পাইল্ড শিরোলেখ (pch) ব্যবহার একটি দ্বি-পদক্ষেপ প্রক্রিয়া process

প্রথম ধাপে, আপনি একটি স্টাব ফাইলটি সংকলন করুন (ভিএস 200x এ এটি সাধারণত বলা হয় New stdafx.cppনতুন সংস্করণগুলি ব্যবহার করে pch.cpp))। এই স্টাব ফাইলটি অপ্রত্যক্ষভাবে কেবলমাত্র শিরোনামগুলি অন্তর্ভুক্ত করে আপনি প্রম্পম্পাইল করতে চান। সাধারণত, একটি ছোট শিরোনাম (সাধারণত stdafx.hবা pch.hpp) স্ট্যান্ডার্ড শিরোনামগুলি যেমন <iostream>এবং তালিকাভুক্ত করে <string>এবং এটি স্টাব ফাইলের মধ্যে অন্তর্ভুক্ত করা হয়। এটি সংকলন .pch ফাইল তৈরি করে।

পদক্ষেপ 2 এ, আপনার আসল উত্স কোডটিতে প্রথম শিরোলেখের 1 ধাপ থেকে একই ছোট শিরোনাম অন্তর্ভুক্ত রয়েছে। সংকলকটি যখন এই বিশেষ শিরোনামটির মুখোমুখি হয়, তার পরিবর্তে সংশ্লিষ্ট .pch ফাইলটি পড়ে। তার অর্থ এটি প্রতিবার সেই মানক শিরোনামগুলি (পুনরায়) সংকলন করতে হবে না।

আপনার ক্ষেত্রে, এটি প্রথম পদক্ষেপ ব্যর্থ বলে মনে হচ্ছে। এখনও স্টাব ফাইল উপস্থিত আছে? আপনার ক্ষেত্রে, সম্ভবত এটি হবে xxxxx.cpp। এটি অবশ্যই একটি ফাইলের সাথে সংকলিত হওয়া উচিত /Yc:xxxxx.pch, যেহেতু এটি পিএইচসি প্রক্রিয়াটির প্রথম ধাপটি নির্দেশ করার জন্য সংকলক পতাকা। যদি xxxxx.cppউপস্থিত থাকে এবং যদি এইরকম স্টাব ফাইল হয় তবে সম্ভবত এটির /Yc:সংকলক বিকল্পটি এটি অনুপস্থিত ।


13
তাহলে এটি সম্ভবত তার / Yc: সংকলক বিকল্পটি হারিয়েছে missing উপায় দ্বারা বিকল্পটি প্রোজেক্ট প্রোপার্টি পৃষ্ঠাগুলি / কনফিগারেশন প্রোপার্টি / সি-সি ++ /
প্রাকম্পাইল্ড শিরোনামে অবস্থিত

22

ফিক্স:

  1. আপনার প্রকল্পে xxxxx.cpp রয়েছে তা নিশ্চিত করুন

  2. কম্পাইল xxxxx.cpp / YC পতাকা (সঙ্গে তৈরি করুন Precompiled শিরোলেখ)
    (ডান xxxxx.cpp উপর ক্লিক -> বৈশিষ্ট্য -> Precompiled শিরোলেখ -> তৈরি )

  3. কম্পাইল অন্যান্য সব ফাইল / ইউ পতাকা (সঙ্গে ব্যবহারের Precompiled শিরোলেখ)
    (ডান প্রকল্পের উপর ক্লিক -> বৈশিষ্ট্য -> Precompiled শিরোলেখ -> ব্যবহার )


এটি আমাকে স্থির করেছে। আপনাকে অনেক ধন্যবাদ!
চার্লসডাব্লু

7
  1. প্রকল্পে ডান ক্লিক করুন এবং সম্পত্তি মেনু আইটেমটি নির্বাচন করুন
  2. সি / সি ++ -> পূর্বনির্ধারিত শিরোনাম got
  3. পূর্বনির্ধারিত শিরোনাম ব্যবহার না করা নির্বাচন করুন

এটি আমার পক্ষে কাজ করেছে। আমি "stdafx.cpp" মুছে ফেলেছি, তারপরে যখন আমি এটি আবার যুক্ত করি, ততক্ষণ আমি পূর্ববর্তী কম্পাইল হেডারগুলি স্যুইচ না করা পর্যন্ত এই ত্রুটিটি দূর হবে না। প্রকল্পটি যাই হোক না কেন ক্ষুদ্র, তাই এটি গতিতে অনেক পার্থক্য তৈরি করে এমনটি নয়।
কনটাঙ্গো

3
4. নির্বাচন করুনCreate (/Yc) (পুনরুদ্ধার করতে এবং এটি আবার ব্যবহার করুন)
বিটারব্লু

2

হ্যাঁ এটি অন্যদের মতো / ওয়াইসি বিকল্পগুলির দ্বারা নির্মূল করা যেতে পারে তবে সম্ভবত এটি সংশোধন করার জন্য আপনার এটি স্পর্শ করার প্রয়োজন হবে না। কোনও সেটিংস পরিবর্তন না করে আপনি কেন এই ত্রুটিটি প্রথম স্থানে পাচ্ছেন? আপনি এই প্রকল্পটি 'পরিষ্কার' করে থাকতে পারেন এবং একটি সিপিপি ফাইল সংকলন করার চেয়েও চেষ্টা করতে পারেন। আপনি এই ক্ষেত্রে এই ত্রুটিটি পাবেন কারণ প্রাকম্পম্পেলার শিরোনামটি এখন অনুপস্থিত। কেবলমাত্র পুরো প্রকল্পটি তৈরি করুন (এমনকি যদি ব্যর্থ হন) এবং কোনও সিঙ্গল সিপিপি ফাইল তৈরি করার চেয়ে আপনি এই ত্রুটিটি পাবেন না।


2

যদি কোনও সার্ভার বিল্ডে আপনার সাথে এটি ঘটে থাকে (অ্যাপকেন্টার) এবং কোকোপড ব্যবহার করে ইও উয়ার আপনার পডফাইলে চেক ইন হয়েছে কিনা তা নিশ্চিত করে।

AppCenter কেবলমাত্র "পড ইনস্টল" কমান্ড চালায় যদি এটি কোনও পোফিল খুঁজে পায় এবং এটি ফাইলগুলিতে পডস ফোল্ডারটি খুঁজে না পায়।

আমার ফোল্ডারটি চেক-ইন ছিল, তবে গিটটি স্বয়ংক্রিয়ভাবে .pch ফাইলগুলিকে উপেক্ষা করে (আপনি এটি পরীক্ষা করার জন্য .gitignore দেখুন), আমার .pch চেক ইন করা হয়নি।

আমি .pch ফাইলগুলি পরীক্ষা করার জন্য জোর করে আমার ইস্যুটি সাজিয়েছি, তবে পিওডিএস ফোল্ডারটি মুছে ফেলাও খুব বেশি কাজ করা উচিত, যেহেতু এপেনস্টার পড ইনস্টল কমান্ডটি চালাবেন।

আশাকরি এই কাউকে সাহায্য করে।


0

যদি সবকিছু ঠিক থাকে তবে এই ভুলটি উপস্থিত থাকে তবে এটির পরবর্তী বিভাগটি **** এ পরীক্ষা করা দরকার v vcxproj ফাইল:

<ClCompile Include="stdafx.cpp">
  <PrecompiledHeader Condition=

আমার ক্ষেত্রে এটি একটি কনফিগারেশনের ভুল নাম ছিল: কেবলমাত্র প্রথম শব্দ।


0

আমি জানি এই বিষয়টি খুব পুরানো, তবে আমি সম্প্রতি VS2015 এ এর ​​সাথে কাজ করছি এবং বিল্ড ফোল্ডারগুলি মুছতে এবং এটি পুনর্নির্মাণে সহায়তা করেছিল। প্রোগ্রামটি বন্ধ করার চেষ্টা করার সময় বা বিল্ডিংয়ের সময় কোনও প্রোগ্রাম থামানো / জমাটবদ্ধ ভিএস হওয়ার কারণে এটি ঘটতে পারে।


হ্যাঁ, তবে মূল প্রশ্নটি ভিএস ২০০৮ এর সাথে করা হয়েছিল, ভিএস ২০১৫ নয়। আপনার কী কোনও নিশ্চিততা আছে যে এটি অপের সমস্যার সমাধান করবে?
টি-হেরন

এটি ভিএস সংস্করণ যাই হোক না কেন, সমস্যাটি বিভিন্ন বিল্ড জুড়ে এখনও দেখা দেয়। কেবল এটি চেষ্টা করে দেখুন এবং দেখুন যে এটি আপনার সাথে যে কারওর সাথে व्यवहार করছে তার জন্য কাজ করে।
গ্লোভার 12

0

আমি একই রকম সমস্যা থাকা আইওএস পিসিএইচ ফাইলটি অনুসন্ধান করছিলাম, আপনি যদি আমার মতো এখানেও পান তবে আমি যে সমাধানটি পেয়েছি তা হ'ল ডেরাইভেড ডেটা সাফ করার মাধ্যমে; সিমুলেটর (গুলি) বন্ধ করুন, এক্সকোড প্রেফগুলিতে যান -> অবস্থানগুলি -> উত্পন্ন ডেটা ফাইলের পথে যান, এক্সকোড বন্ধ করুন, প্রাপ্ত ডেটা ফোল্ডারে ফাইলগুলি মুছুন, পুনরায় আরম্ভ করুন এবং চিয়ার্স :)


-1

বিল্ড> ক্লিন সলিউশন চেষ্টা করুন, তারপরে বিল্ড> সমাধান তৈরি করুন Build এটি আমার পক্ষে কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.