Eclipse CDT এ সি ++ 11 / সি ++ 0x সমর্থন কীভাবে সক্ষম করবেন?


210

গ্রহণ 3.7.1 সিডিটি 1.4.1 জিসিসি 4.6.2

এটি সি ++ 11 কোডের এক টুকরো উদাহরণ:

auto text = std::unique_ptr<char[]>(new char[len]);

ইক্লিপস সম্পাদক এই সম্পর্কে অভিযোগ করেছেন:

Function 'unique_ptr' could not be resolved

মেকফিল সংকলন সূক্ষ্মভাবে কাজ করে। এই ধরণের ত্রুটি সম্পর্কে অভিযোগ বন্ধ করে কীভাবে গ্রহণ করবেন?


12
খুব কমপক্ষে, এটি হওয়া উচিতstd::unique_ptr<char[]>
কুবিবি

নিশ্চিত নন যে সঠিক হয় - গৃহস্থালির কাজ [] হয় গৃহস্থালি পরিবর্তনীয় * এবং unique_ptr <গৃহস্থালির কাজ> একটি পয়েন্টার থেকে গৃহস্থালির কাজ, গৃহস্থালির কাজ মত *
নিক

1
unique_ptr<char>কল করবে না delete, যা তৈরি করার পরে এটি ভুল new[]?
ডায়েটারিচ এপ্পি

6
@ নিক: না, তিনি ঠিক বলেছেন। আপনি যেভাবে লিখেছেন তা কল deleteকরার কারণ ঘটবে , যখন আপনাকে কল করার প্রয়োজন হবে delete[]unique_ptr<char>ধরে নেয় যে এটি একটি পয়েন্টার, যা দিয়ে মোছা হয়েছে হচ্ছে deleteunique_ptr<char[]>একটি অ্যারের প্রত্যাশা করে, যা delete[]সঠিকভাবে মুছে ফেলা হবে।
নিকল বোলাস

উত্তর:


224

আমি এই নিবন্ধটি গ্রহন ফোরামে পেয়েছি , কেবল সেই পদক্ষেপগুলি অনুসরণ করেছে এবং এটি আমার পক্ষে কাজ করে। আমি একটি সাইগউইন সেটআপ সহ উইন্ডোজে এক্লিপস ইন্ডিগো 20110615-0604 ব্যবহার করছি।

  • একটি নতুন সি ++ প্রকল্প তৈরি করুন
  • প্রতিটি কিছুর জন্য ডিফল্ট বিকল্প
  • একবার তৈরি হয়ে গেলে, প্রকল্পটি ডান ক্লিক করুন এবং "সম্পত্তি" এ যান
  • সি / সি ++ বিল্ড -> সেটিংস -> সরঞ্জাম সেটিংস -> জিসিসি সি ++ সংকলক -> বিবিধ -> অন্যান্য পতাকা। রাখুন -std=c++0x(বা -std=c++11শেষে আরও নতুন সংকলক সংস্করণের জন্য ... ... জিসিসি সি ++ কম্পাইলারের পরিবর্তে আমার কাছে সাইগউইন সংকলকও রয়েছে
  • সি / সি ++ সাধারণ -> পথ এবং চিহ্ন -> চিহ্ন -> জিএনইউ সি ++। "যোগ করুন ..." এ ক্লিক __GXX_EXPERIMENTAL_CXX0X__করুন এবং "নাম" এ দু'টি আন্ডারস্কোর সংযোজন এবং প্রিন্ট করা নিশ্চিত করুন এবং "মান" ফাঁকা রেখে দিন।
  • হিট প্রয়োগ করুন, আপনাকে যা করতে বলবে তা করুন, তারপরে ঠিক আছে hit

এক্সিলিপ এফএকিউ-তে এখন এর বিবরণ রয়েছে: অ্যাক্লিপস এফএকিউ / সি ++ ১১ টি বৈশিষ্ট্য

গ্রহ চিত্র চিত্র নির্ধারণ


2
এই, এটা কাজ! তবে, GXX_EXPERIMENTAL_CXX0X- তে দুটি আন্ডারস্কোর সংযোজন এবং সংযোজন করা নিশ্চিত করুন - আমি এর মধ্যে এটি গ্রহণ করব
নিক

5
এটি কি মজাদার সম্পাদক ত্রুটিগুলি সরিয়ে দিয়েছে? সংকলন নিয়ে আমার কোনও সমস্যা নেই, এবং নতুন এসটিডি প্রকারগুলি স্বীকৃত, তবে আমি লুপ এবং মূল্যসূত্রের রেফারেন্সের ভিত্তিতে পরিসরের জন্য সম্পাদক সিনট্যাক্স ত্রুটিগুলি থেকে মুক্তি পেতে পারি না &&
janchopanza

7
প্রাকৃতিক ফলোআপ প্রশ্নটি এখন পরিণত হয়: "C ++ 11 প্রকল্প" বলে একটি নতুন গ্রহন প্রকল্পের টেম্পলেটটিতে এই নির্দিষ্ট সি ++ প্রকল্প সেটিংস সংরক্ষণ করে আমরা কী আমাদের কর্মপ্রবাহকে অনুকূল করতে পারি?
নর্ডলিউ

38
দ্রষ্টব্য: জুনোর জন্য যে কেউ উত্তরটি খুঁজছেন তাদের পক্ষে এটি কার্যকর হয় না
ক্রিস্টোফার

4
কেপলার / জুনোর জন্য, এই উত্তরটি পাওয়া যায় । এটি নীচে জোহান লুন্ডবার্গের উত্তরের সম্পাদনায় পোস্ট করা হয়েছে তবে গ্রহণযোগ্য উত্তরটিকে আরও সম্পূর্ণ করতে আমি এখানে এটিও নোট করি।
ইনউজেবল লুমিয়ার

150

গ্রহন সিডিটি 4.4 লুনা এবং 4.5 মঙ্গলের জন্য নির্দেশনা

প্রথমে, প্রকল্পটি তৈরি করার আগে, এক্সিলিপ সিনট্যাক্স পার্সার কনফিগার করুন:

Window-> Preferences-> C/C++-> Build-> Settings-> Discovery->CDT GCC Build-in Compiler Settings

টেক্সট বাক্সে শিরোনাম Command to get compiler specsযুক্ত করুন-std=c++11

এখন আপনি প্রকল্প তৈরি করতে পারেন, আপনি কী ধরনের প্রকল্প তৈরি করেছেন তার উপর কনফিগারেশন নির্ভর করে:

প্রকল্প হিসাবে তৈরি করা হয়েছে: ফাইল -> নতুন -> প্রকল্প -> সি / সি ++ -> সি ++ প্রকল্প

তৈরি প্রকল্পে ডান ক্লিক করুন এবং খুলুন

Properties-> C/C++ Build-> Settings-> Tool Settings-> GCC C++ Compiler->Dialect

শিরোনামযুক্ত -std=c++11পাঠ্য বাক্সে রাখুন other dialect flagsবা ড্রপ ডাউন ISO C++11থেকে নির্বাচন করুন Language standard

সিএমকে প্রকল্পের জন্য

গ্রহন প্রকল্প প্রকল্প তৈরি করুন (আপনার প্রকল্পের অভ্যন্তরে)

mkdir build
cd build
cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ..

তারপরে উত্সাহিত ডিরেক্টরিটি গ্রহকে স্ট্যান্ডার্ড ইলিপস প্রকল্প হিসাবে আমদানি করুন। ডান ক্লিক প্রকল্প এবং খুলুন

Properties-> C/C++ General-> Preprocessor Include Paths, Marcos etc.->Providers

সক্ষম করুন CDT GCC Build-in Compiler Settingsএবং এর চেয়ে বেশি সরান Contributed PathEntry Containers(এটি গুরুত্বপূর্ণ)

সর্বশেষ সাধারণ পদক্ষেপ

পুনরায় কম্পাইল করুন, পুনর্জাত করুন Project-> C/C++ Indexএবং Eclipse পুনরায় আরম্ভ করুন।


1
এমনকি একটি গ্রহন পুনরায় আরম্ভের প্রয়োজন ছাড়াই নিখুঁতভাবে কাজ করেছেন। ধন্যবাদ.
প্রসন্নাক

ধন্যবাদ. লুনার উপরেও আমার পক্ষে আর কোনও উত্তর কার্যকর হয়নি।
মোহাম্মদ এল-নাকিব

এখনও মঙ্গল গ্রহে কাজ করে। দুর্দান্ত উত্তরের চেয়ে বেশি! আমি যদি এই উত্তরটি কেবল দুবারই দিতে পারতাম!
মোহাম্মদ এল-নাকিব

ধন্যবাদ! আমি যে সমস্যার মুখোমুখি হয়েছি তার পক্ষে এটি সবচেয়ে সহায়ক উত্তর (4.5)
আতুরস্যামস

2
E ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ সেলিপ্স নিওন ৩ এর জন্য, সি ++ মেকফিল প্রকল্পের সাথে, এড -std=c++11করার জন্য প্রকল্পের সেটিংটি ছিল Project Properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> Providers [tab] -> CDT GCC Built-in Compiler Settings -> Command used to get compiler specs:। আপনার -std=c++11এটি যোগ করুন। আমি এটি প্রস্তাবিত হিসাবে গ্লোবাল ওয়ার্কস্পেস সেটিংসে সেট করেছিলাম, তবে আমি নতুন Makefileপ্রকল্প তৈরি করার সময় এটি উপরে বর্ণিত অবস্থানটিতে অনুলিপি করা হয়নি ।
বিওনরোপ

112

২০১ 2016 আপডেট করুন:

জিসিসি 6 হিসাবে ( পরিবর্তনগুলি) ), ডিফল্ট সি ++ উপভাষা সি ++ 14। এর অর্থ হ'ল যদি না আপনার স্পষ্টভাবে এর চেয়ে নতুন বা পুরানো উপভাষার প্রয়োজন হয় তবে আপনাকে আর গ্রহন নিয়ে আর কিছু করার দরকার নেই।

লুনা এবং মঙ্গল গ্রহের জন্য

এই সম্প্রদায়ের উইকি বিভাগটি ট্রিসমেগিস্টোসের উত্তর অন্তর্ভুক্ত করে;

১. প্রকল্প তৈরির আগে, এক্সিলিপ সিনট্যাক্স পার্সার কনফিগার করুন:

উইন্ডো -> পছন্দসমূহ -> সি / সি ++ -> বিল্ড -> সেটিংস -> আবিষ্কার -> সিডিটি জিসিসি বিল্ড-ইন সংকলক সেটিংস

কমান্ড শিরোনামে টেক্সট বাক্সে সংকলক স্পেকস যোগ করার জন্য কমান্ড শিরোনাম -std=c++14 ২. প্রকল্প তৈরি করুন, কনফিগারেশন নির্ভর করে আপনি কী ধরণের প্রকল্প তৈরি করেছেন:

প্রকল্প হিসাবে তৈরি করা হয়েছে: ফাইল -> নতুন -> প্রকল্প -> সি / সি ++ -> সি ++ প্রকল্প

তৈরি প্রকল্পে ডান ক্লিক করুন এবং খুলুন

বৈশিষ্ট্য -> সি / সি ++ বিল্ড -> সেটিংস -> সরঞ্জাম সেটিংস -> জিসিসি সি ++ সংকলক -> উপকরণ

-std=c++14অন্যান্য ডায়ালেক্ট পতাকা শিরোনামে পাঠ্য বাক্সে রাখুন বা ভাষা স্ট্যান্ডার্ড ডাউন থেকে আইএসও সি ++ 11 নির্বাচন করুন।

GXX_EXPERIMENTAL হ্যাক ছাড়া এটি সমাধানের এখন একটি নতুন উপায় রয়েছে।

অতি সাম্প্রতিক সংস্করণের জন্য : (বর্তমানে জুনো এবং কেপলার লুনা ):

জুনোর নতুন সংস্করণের অধীনে সেটিংসটি অবস্থিত Project properties -> C/C++ General -> Preprocessor Include Paths, Macros etc. -> tab Providers -> CDT GCC Builtin Compiler Settings ()

পুরানো সংস্করণ 2012/2013:

  1. সি / সি ++ বিল্ড (প্রকল্প সেটিংসে) এর অধীনে, প্রিপ্রসেসর অন্তর্ভুক্ত পথটি সন্ধান করুন এবং সরবরাহকারী ট্যাবে যান । সিডিটি জিসিসি বিল্টিন সংকলক সেটিংস ব্যতীত সকলকে অনির্বাচিত করুন। তারপরে আনট্যাগ শেয়ার সেটিংস এন্ট্রি…। সংকলক স্পেস পেতে কমান্ড নামক পাঠ্য বাক্সে -std = c ++ 11 বিকল্পটি যুক্ত করুন

  2. পাথ এবং চিহ্নগুলিতে যান। প্রতীকগুলির অধীনে, পুনরুদ্ধার ডিফল্টগুলি ক্লিক করুন এবং তারপরে প্রয়োগ করুন।


মন্তব্য:

গ্রহনটি হিট প্রয়োগের বিষয়ে পছন্দসই, আপনি যখনই কোনও সেটিংস ট্যাব রেখে যাবেন ততবার আপনার এটি করা দরকার।

[স্ব-পদোন্নতি]: উপরের উপর ভিত্তি করে আমি আমার নিজস্ব আরও বিস্তারিত নির্দেশাবলী লিখেছি। http://scrupulousabstractions.tumblr.com/post/36441490955/eclipse-mingw-builds

Https://stackoverflow.com/a/13635080/1149664-Nobody এ ব্যবহারকারীকে ধন্যবাদ


3
আপনাকে ধন্যবাদ তবে এটি আমাকে সি ++ 11 রেফারেন্সগুলি সমাধান করতে সহায়তা করে নি। প্রোগ্রামটি সঠিকভাবে সংকলন করে তবে গ্রহপ সেগুলি সমাধান করতে পারে না। আমি যখন "অ্যারে" পরীক্ষা করি তখন #ifndef __GXX_EXPERIMENTAL_CXX0X__সত্যটি দেয় এবং এর নীচে কোডটি বিশ্লেষণ করা হয় না। আমি যখন __GXX_EXPERIMENTAL_CXX0X__প্রকল্প প্রতীকগুলিতে যুক্ত করি তখন অ্যারের সমাধান হয়ে যায় তবে আমার প্রকল্পের উল্লেখগুলি গণ্ডগোল হয়ে যায়। এখানে সমস্যা কি হতে পারে?
হালিল কাসকাভালি

1
আমি এটি একটি বাগ মনে করি। আমি এটি পুনরায় প্রযোজনা করেছি: নতুন প্রকল্প খুলুন। সি ++ ১১ টি বৈশিষ্ট্য সক্ষম করুন। পাবলিক ভেরিয়েবল সহ একটি এলোমেলো ক্লাস যুক্ত করুন। এই এলোমেলো শ্রেণির ভেক্টর তৈরি করুন। পুনরুদ্ধারকারী পান। পাবলিক ভেরিয়েবল অ্যাক্সেস করার চেষ্টা করুন। হয় আমার কর্মক্ষেত্রটি দূষিত হয়েছে বা Eclipse এ এমন একটি বাগ রয়েছে যা এটি বিশ্লেষণ করতে পারে না।
হালিল কাসকাভালি

1
@HililKaskavalci আমি এই একই বাগটি পেয়েছি। আমি যদি সি ++ 11 এর জন্য সম্পাদকটি সেট করি তবে পুনরাবৃত্তিগুলি সমাধান করতে পারে না। যদি আমি না করি তবে স্টেট :: অনন্য_পিটার সমাধান করতে পারে না। সত্যিই বিরক্তিকর, যেহেতু আমি উভয়ই ব্যবহার করি।
কিয়ান

1
@ কিয়ান আমি বাগটি রিপোর্ট করেছি। bugs.eclipse.org/bugs/show_bug.cgi?id=397027 । এটি বেশ বিরক্তিকর এবং আমি বুস্ট লাইব্রেরিগুলি ব্যবহার শুরু করি, তারা ত্রুটিটি তৈরি করে না :)
হালিল কাসকাভালকি

1
আমার জন্য কাজ কর! ধন্যবাদ! (এটি আপনার রেফারেন্স দ্বারা এটি করেছেন) আমি সরবরাহকারীর সাথে -std = c ++ 11 যোগ করেছি এবং প্রতীকগুলিতে ডিফল্ট পুনরুদ্ধার করি। আমি মনে করি প্রতীকগুলিতে ডিফল্ট পুনরুদ্ধার আমাকে বাঁচায়। এখন অনন্য_পিটার সমাধান হচ্ছে।
ডেনিস জাইকিন

20

সর্বশেষ (জুনো) গ্রহন সিডটি-র জন্য নিম্নলিখিতটি আমার জন্য কাজ করেছে, __GXX_EXPERIMENTAL_CXX0X__নিজেকে প্রকাশ করার দরকার নেই । এটি সিডিটি সূচক এবং সংকলকের পরামিতি হিসাবে কাজ করে:

"আপনার প্রকল্পের নাম" -> রাইট ক্লিক -> বৈশিষ্ট্য:

সি / সি ++ জেনারেল -> প্রিপ্রেসেসর পাথ, ম্যাক্রোস ইত্যাদি অন্তর্ভুক্ত করুন -> "সরবরাহকারী" নামক ট্যাবে স্যুইচ করুন:

  • "কনফিগারেশন" এর জন্য "রিলিজ" নির্বাচন করুন (এবং তারপরে "ডিবাগ")

  • সমস্ত সরবরাহকারী স্যুইচ করুন এবং কেবল "সিডিটি জিসিসি অন্তর্নির্মিত সংকলক সেটিংস" নির্বাচন করুন

  • "প্রকল্পগুলির (বৈশ্বিক সরবরাহকারী) এর মধ্যে সেটিং সেটিং এন্ট্রি ভাগ করে দিন"

  • "কমপাইলার স্পেস পেতে কমান্ডে:" যোগ করুন "-std = c ++ 11" উদ্ধৃতি ব্যতীত (উদ্ধৃতিগুলির সাথেও কাজ করতে পারে)

  • প্রয়োগগুলি হিট করুন এবং বিকল্পগুলি বন্ধ করুন

  • সূচকটি পুনর্নির্মাণ করুন

এখন সমস্ত সি ++ সম্পর্কিত বিষয়গুলি সূচক দ্বারা সঠিকভাবে সমাধান করা উচিত।

উইন x এক্স 64৪, সোর্সফোরেজ মিংডবিল্ডস প্রকল্প থেকে সিডিটি মিংডাব্লু-ডাব্লু g৪ জিসিসি ৪.7.২ সহ সর্বশেষ অফিসিয়াল গ্রহণ


ঠিক একই ধরণের সম্পাদকীয় সতর্কবাণী পেয়ে
যাচ্ছিল

2
আপনাকে নতুন সেটিংস দিয়ে একবার সংকলন করতে হবে, সুতরাং পার্সার "শিখবেন" যে std = c ++ 11 পতাকা সেট করা আছে
Andreas

সংকলক সংস্করণের উপর নির্ভর করে স্ট্যান্ড = সি ++ ১১ (উদাহরণস্বরূপ ডেবিয়ান
হুইজি

15

আমার এক্সিলিপ জুনোতেও আমার একই সমস্যা ছিল। এই পদক্ষেপগুলি সমস্যার সমাধান করেছে:

  • যাও Project -> Properties -> C/C++ General -> Path and Symbols -> Tab [Symbols]
  • প্রতীকটি যুক্ত করুন: 201103L মান সহ __cplsplus

2
এটি মেকফিল প্রকল্পগুলির জন্যও কাজ করে বলে উত্তরটি গ্রহণ করা উচিত!
ওমিক্রন

@ জের্ক ৩১ এটি উইন্ডোতে চালিত এক্লিপস জুনোর জন্য কাজ করছে না (আমার জন্য), বাইনারি ঠিকঠাক কাজ করা সত্ত্বেও আমি অভিযোগকারীদের অ-প্রয়োজনীয় ত্রুটিগুলি দেখতে পাচ্ছি। আমাকে সাহায্য করুন!!!
ওভাররেচচেঞ্জ

আমি সত্যিই দুঃখিত আমি উইন্ডোজে আপনাকে সহায়তা করতে পারি না এই OS এ আমার কোনও সি ++ প্রকল্প চালানোর চেষ্টা করার সুযোগ নেই। আমি আপনাকে শুভ এবং শুভ কামনা করি!
জেরোম

13

std::threadঅমীমাংসিত প্রতীক থেকে মুক্তি পেতে আমার জন্য যা কাজ করেছিল তা এক্সিলিপ সিডিটি কেপলারের জন্য:

  1. পছন্দসমূহ-> সি / সি ++ -> বিল্ড-> সেটিংসে যান

  2. আবিষ্কারের ট্যাবটি নির্বাচন করুন

  3. সিডিটি জিসিসি অন্তর্নির্মিত সংকলক সেটিংস নির্বাচন করুন [ভাগ করা]

  4. "সংকলক স্পেস পেতে কমান্ড:" ক্ষেত্রে যেমন -std = সি ++ 11 যুক্ত করুন:

M M আদেশ ND -E -P -v -dD -std = সি ++ 11 $ P ইনপুটস}

  1. প্রকল্পের জন্য ঠিক আছে এবং পুনর্নির্মাণ সূচক।

-std=c++11প্রকল্পে Properties/C/C++ Build->Settings->Tool Settings->GCC C++ Compiler->Miscellaneous->Other ফ্ল্যাগ যুক্ত করা কেপলারের পক্ষে যথেষ্ট ছিল না, তবে হেলিসের মতো পুরানো সংস্করণগুলির জন্য এটি যথেষ্ট ছিল।


এক্সিলিপ সংস্করণ: 2019-09 আর. এই সমাধানটি আমার পক্ষে কাজ করেছিল তবে, আমি এর আগে অনেক সময় ব্যয় করেছি। সমস্যাটি বিল্ডার সেটিংসে ছিল: প্রকল্প -> সম্পত্তি -> সি / সি ++ বিল্ড: ট্যাবে 'বিল্ডার সেটিংস' 'বিল্ডার ধরণের' জন্য 'অভ্যন্তরীণ বিল্ডার' চয়ন করুন।
গ্রেখস

5

আমি এখনও মন্তব্য করতে পারি না তাই নিজের উত্তরটি লিখছি:

এটি সম্পর্কিত __GXX_EXPERIMENTAL_CXX0X__ এবং এটি গ্রিপস জুনো এবং সিডিটি 8.x এর জন্য বৈধ

এই উত্তরের কিছু অংশ ইতিমধ্যে অন্যান্য উত্তরে areাকা আছে তবে আমি এটি সুসংগত হতে চাই।

Stdc ++ 11 ব্যবহার করে এটি নির্মাণ করা সম্ভব করার জন্য, কম্পাইলারের জন্য একটি নির্দিষ্ট পতাকা যুক্ত করতে হবে। আপনি প্রকল্পের বৈশিষ্ট্যগুলির মাধ্যমে এটি করতে পারেন। প্রকল্পের বৈশিষ্ট্যগুলি পরিবর্তন করতে RMBএবং Project propertiesবা ALT + ENTER। তারপরে সি / সি ++ বিল্ড -> সেটিংস -> সরঞ্জাম সেটিংস -> জিসিসি সি ++ সংকলক -> বিবিধ -> অন্যান্য পতাকা। লাইনের শেষে রাখুন -std = C ++ 11, জিসিসি জন্য এটি ভালো কিছু দেখতে হবে: -c -fmessage-length=0 -std=c++11। -Stdc ++ যুক্ত করে 11 পতাকা সংকলক (জিসিসি) ঘোষণা করবে__GXX_EXPERIMENTAL_CXX0X__ নিজেই ।

এই মুহুর্তে আপনি সি ++ 11 এর সমস্ত ধার্মিকতা ব্যবহার করে প্রকল্প তৈরি করতে পারেন।

সমস্যাটি হ'ল Eclipse এর ত্রুটিগুলি যাচাই করার জন্য এটির নিজস্ব পার্সার রয়েছে - এজন্য আপনি এখনও Elpipse Editor এ সমস্ত বাজে ত্রুটি পেয়ে যাচ্ছেন, একই সাথে আপনি কোনও প্রকল্প ছাড়াই নির্মাণ এবং পরিচালনা করতে পারেন। এই __GXX_EXPERIMENTAL_CXX0X__প্রকল্পটির জন্য স্পষ্টভাবে পতাকা ঘোষণার মাধ্যমে এই সমস্যাটি সমাধান করার একটি উপায় রয়েছে , কেউ এটি করতে পারেন (ঠিক যেমন কার্স্টেন গ্রেইনার বলেছিলেন): সি / সি ++ সাধারণ -> পথ এবং চিহ্ন -> প্রতীক -> জিএনইউ সি ++। "নাম ..." এ "যুক্ত করুন ..." এবং অতীতে __GXX_EXPERIMENTAL_CXX0X__(দুটি আন্ডারস্কোর সংযোজন এবং প্রিপেন্ড করা নিশ্চিত করুন) ক্লিক করুন এবং "মান" ফাঁকা ছেড়ে যান। এবং এখন প্রথম অংশের মন্তব্যে আমি যে অতিরিক্ত অংশটি কভার করতে চেয়েছিলাম তা এখানে যান: সি / সি ++ জেনারেল -> প্রিপ্রোসেসর পাথ ম্যাক্রোস অন্তর্ভুক্ত করুন -> সরবরাহকারী এবং নির্বাচন করুনCDT Managed Build Setting Entriesতারপরে আবেদন করুন এবং এন্ট্রি ট্যাবে ফিরে যান, জিএনইউ সি ++ এর অধীনে এখন সিডিটি ম্যানেজড বিল্ড সেটিং এন্ট্রিগুলি অবশ্যই সেখানে ভিতরে নির্ধারিত আছে __GXX_EXPERIMENTAL_CXX0X__কিনা তা পরীক্ষা করে দেখতে হবে -> অ্যাপ্লিকেশন এবং পুনর্নির্মাণ সূচকটি আপনাকে এই মুহুর্তে ভাল হতে হবে।


3

আমার বেশ কয়েকটি সমস্যাও ছিল (উবুন্টু ১৩.০৪ -৪-বিট, জি ++ - ৪.৮, গ্রহণ জুনো ৩.৮.১, সিডিটি .0.০.০)। উপরে অনেকগুলি বিষয় উল্লিখিত হয়েছে, সেগুলির পুনরাবৃত্তি করার জন্য দুঃখিত, তবে অতিরিক্তভাবে আমার ব্যবহার করতে সমস্যা হয়েছিল

std::thread

সি ++ 11 এর অংশ হিসাবে (লিঙ্কারের জন্য -প্রেড যুক্ত করে বিষয়টি সমাধান করে)। যাইহোক, অবশেষে এই সেটিংসটি ভাল কাজ করেছে:

প্রকল্প -> সম্পত্তি -> সি / সি ++ বিল্ড -> সেটিংস -> বিবিধ। যুক্ত করুন

-std=c++11

জিসিসি এবং জি ++ সংকলকগুলির জন্য পতাকা। প্রয়োগ ক্লিক করুন।

লিঙ্কারের জন্য, একই উইন্ডো, বিবিধ, লিংকার পতাকাগুলি যুক্ত করেছে

-pthread

পতাকা। ভাগ করা লাইব্রেরি সেটিংস, ভাগ করা বস্তুর নাম, যুক্ত করুন

-Wl,--no-as-needed

পতাকাও। প্রয়োগ ক্লিক করুন।

সি / সি ++ সাধারণ -> পাথ এবং চিহ্ন -> প্রতীকগুলি ট্যাব, জিএনইউ সি ++ নির্বাচিত, যুক্ত করুন

__GXX_EXPERIMENTAL_CXX0X__

(মূল্যহীন)

পতাকা। প্রয়োগ ক্লিক করুন।

সি / সি ++ সাধারণ -> প্রাকপ্রসেসর পাথ অন্তর্ভুক্ত করে .. -> সরবরাহকারী ট্যাব: চেক করুন

সিডিটি জিসিসি অন্তর্নির্মিত সংকলক সেটিংস

এবং "কমলার সংকলক পেতে স্পষ্ট পেতে", যুক্ত করুন

-std=c++11

পতাকা। শেয়ারটি আনচেক করুন। প্রয়োগ ক্লিক করুন।

সিডিটি ম্যানেজগুলি সেটিং এন্ট্রিগুলি তৈরি করে, এটিও পরীক্ষা করে দেখুন। অন্য দু'জনকে চেক করুন। প্রয়োগ ক্লিক করুন।

এন্ট্রি ট্যাবটিতে ফিরে গিয়ে, জিএনইউ সি ++ সিডিটি ম্যানেজেজস সেটিং এন্ট্রিগুলি পরিচালনা করে, আপনার এখন নিজের যুক্ত হওয়া উচিত

__GXX_EXPERIMENTAL_CXX0X__

এন্ট্রি।

এটাই. কোডিংয়ের সময় টাইপ করুন

std::

উদাহরণস্বরূপ এখন থ্রেড ক্লাসটি স্বয়ংক্রিয়ভাবে সম্পূর্ণ করতে পারে, বিল্ডগুলি ভাল কাজ করা উচিত এবং সেখানে কোনও হওয়া উচিত নয়

std::system_error'what(): Enable multithreading to use std::thread: Operation not permitted

রানটাইম এ


এটা Project -> Properties -> C/C++ Build -> Settings -> Miscellaneousআমার জন্য কাজ করা পদক্ষেপ ছিল । একটি
গুচ্ছকে

2

আমি জানি না এটি কেবলমাত্র আমার জন্য, সর্বাধিক র‌্যাঙ্কড সমাধানটি আমার পক্ষে কাজ করে না, আমার গ্রহন সংস্করণটি হ'ল উবুন্টুতে sudo apt-get ইনস্টল গ্রহন ব্যবহার করে ইনস্টল করা একটি সাধারণ প্ল্যাটফর্ম প্ল্যাটফর্ম তবে আমি এমন একটি সমাধান পেয়েছি যা একসাথে পদ্ধতি গ্রহণ করে ts সর্বোচ্চ স্থান নির্ধারণ করা সমাধান এবং দ্বিতীয়টি উভয় থেকে, আমি এটিকে কাজ করতে যা করেছি তা নীচে বর্ণিত হয়েছে (নোট করুন যে অন্যান্য ধাপগুলি যেমন সি ++ প্রকল্প তৈরি করা ইত্যাদি সরলতার জন্য অগ্রাহ্য করা হয়েছে)

একবার আপনি সি ++ প্রকল্প তৈরি করে ফেলুন

(1) সি / সি ++ সাধারণ -> পথ এবং চিহ্ন -> চিহ্ন -> জিএনইউ সি ++। "যুক্ত করুন ..." এ ক্লিক করুন এবং GXX_EXPERIMENTAL_CXX0X (দুটি আন্ডারস্কোর সংযোজন এবং প্রিপেন্ড করা নিশ্চিত করুন) "নাম" এ আটকান এবং "মান" ফাঁকা ছেড়ে যান।

(২) সি / সি ++ বিল্ডের অধীনে (প্রকল্প সেটিংসে), প্রিপ্রসেসর অন্তর্ভুক্ত পথটি সন্ধান করুন এবং সরবরাহকারী ট্যাবে যান। সিডিটি জিসিসি বিল্টিন সংকলক সেটিংস ব্যতীত সকলকে অনির্বাচিত করুন। তারপরে আনট্যাগ শেয়ার সেটিংস এন্ট্রি…। সংকলক স্পেস পেতে কমান্ড নামক পাঠ্য বাক্সে -std = c ++ 11 বিকল্পটি যুক্ত করুন

কেবলমাত্র 2 এবং 2 উপরের পদক্ষেপগুলি সম্পাদন করার পরে এটি কাজ করে, গ্রহটি অনন্য_আপনারকে সমাধান করতে সক্ষম হয়, আমি জানি না কেন এই সমাধানটি কাজ করে, আশা করি এটি মানুষকে সহায়তা করতে পারে।


এটি আমার জন্যও কাজ করেছিল (গ্রহন নিওন)। প্রথমে আমি অন্য সরবরাহকারীদের অনির্বাচিত করিনি, যা এখনও সমস্যার সৃষ্টি করে, তবে "সিডিটি জিসিসি অন্তর্নির্মিত সংকলক সেটিংস" এবং "সিডিটি ব্যবহারকারী সেটিংস" এর চেয়ে অন্য সমস্ত সরবরাহকারীকে অনির্বাচিত করে কাজ করেছে। ধন্যবাদ!
zpon

2

std::unique_ptrআপনি আপনার ফাইলে C ++ 11 মেমরি শিরোনাম অন্তর্ভুক্ত করে থাকলেও গ্রহন সি / সি ++ প্রতীকটি চিনতে পারে না ।

ধরে নিচ্ছি আপনি জিএনইউ সি ++ সংকলক ব্যবহার করছেন, এটি ঠিক করার জন্য আমি এটি করেছি:

প্রকল্প -> সম্পত্তি -> সি / সি ++ সাধারণ -> প্রাকপ্রসেসর পাথগুলি অন্তর্ভুক্ত করুন -> জিএনইউ সি ++ -> সিডিটি ব্যবহারকারী সেটিং এন্ট্রি

  1. "অ্যাড ..." বোতামে ক্লিক করুন

  2. ড্রপডাউন মেনু থেকে "প্রিপ্রসেসর ম্যাক্রো" নির্বাচন করুন

    Name: __cplusplus     Value:  201103L
  3. আপনার প্রকল্পে ফিরে যেতে প্রয়োগ করুন এবং তারপরে হিট করুন OK

  4. তারপরে আপনাকে সি ++ সূচি পুনঃনির্মাণ করুন: প্রকল্পগুলি -> সি / সি ++ সূচি -> পুনর্নির্মাণ


এটিই একমাত্র পদ্ধতি যা গ্রহনে 2018-12 এ আমার জন্য কাজ করেছিল। "গৃহীত" উত্তর ইত্যাদি এখন আর 2018-12-এ আর কাজ করে না।
ডেভিড স্টেইনহায়ার

1

আমার জন্য উপর অন্ধকার নিয়ন আমি অনুসৃত Trismegistos উপরে এখানে উত্তর , 'আমি একজন একটি অতিরিক্ত পদক্ষেপ আরো বলেন:

  • প্রকল্পে যান -> বৈশিষ্ট্য -> সি ++ সাধারণ -> প্রাক প্রসেসর পাথ, ম্যাক্রোস ইত্যাদি অন্তর্ভুক্ত করুন -> সরবরাহকারী -> সিডিটি ক্রস জিসিসি অন্তর্নির্মিত সংকলক সেটিংস, পতাকাটি যুক্ত করুন "-std = c ++ 11"

হিট প্রয়োগ এবং ঠিক আছে।

চিয়ার্স,

গাই।


0
  • প্রকল্পটি ডান ক্লিক করুন এবং "সম্পত্তি" এ যান
  • সি / সি ++ বিল্ড -> সেটিংস -> সরঞ্জাম সেটিংস -> জিসিসি সি ++ সংকলক -> বিবিধ -> অন্যান্য পতাকা। অন্যান্য পতাকা পাঠ্যের বাক্সের শেষে এলএম রাখুন এবং ঠিক আছে।

এটি Eclipse এর কোন সংস্করণ?
ব্রায়াম

0

হ্যাক বা ক্লিনার সংস্করণ উভয়ই নীলিকার পক্ষে কাজ করে না। হ্যাক উপেক্ষা করা হয়, এবং প্রয়োজনীয় কনফিগারেশন বিকল্পগুলি অনুপস্থিত। আপাত কোনও কারণ ছাড়াই, বিল্ড কাজ না করার পরে এবং কেন কোনও কার্যকর কারণ প্রদান না করে কাজ শুরু করে। কমপক্ষে কমান্ড লাইন থেকে, আমি পুনরায় উত্পাদনযোগ্য ফলাফল পেতে পারি।


0

এক্সপ্লিস লুনায় সি ++ 14 এর জন্য সমর্থন পেতে, আপনি এই পদক্ষেপগুলি করতে পারেন:

  • ভিতরে C++ General -> Preprocessor Include -> Providers -> CDT Cross GCC Built-in Compiler Settings , "-std = c ++ 14" যুক্ত করুন
  • ভিতরে C++ Build -> Settings -> Cross G++ Compiler -> Miscellaneous , "-std = c ++ 14" যুক্ত করুন

আপনার প্রকল্পটিকে পুনরায় সূচনা করুন এবং অবশেষে Eclipse পুনরায় চালু করুন। এটি প্রত্যাশা মত কাজ করা উচিত।


0

আমি এটিকে ম্যাকের মাধ্যমে সমাধান করেছি। আমি সিসিসি / জি ++ এর সর্বশেষতম সংস্করণ ইনস্টল করতে হোমব্রেইউ ব্যবহার করেছি। তারা / ইউএসআর / স্থানীয় / বিনে / ইউএসআর / স্থানীয় / অন্তর্ভুক্ত সহ অবতরণ করে।

আমি / ইউএসআর / স্থানীয় / বিনে সিডি করলাম এবং জি ++ @ 7 থেকে কেবল একটি সিমলিংক তৈরি করলাম কারণ @ বিট বিরক্তিকর।

তারপরে আমি মাইপ্রজেক্ট -> বৈশিষ্ট্য -> সি / সি ++ বিল্ড -> সেটিংস -> জিসিসি সি ++ সংকলক গিয়ে কমান্ডটি "জি ++" থেকে "/ ইউএসআর / স্থানীয় / বিন / জি ++" এ পরিবর্তন করেছি। আপনি যদি প্রতীকী লিঙ্কটি না করার সিদ্ধান্ত নেন তবে আপনি আরও নির্দিষ্ট হতে পারেন।

লিঙ্কারের জন্য একই জিনিস করুন।

প্রয়োগ করুন এবং প্রয়োগ করুন এবং বন্ধ করুন। এটি সূচকটি পুনর্নির্মাণ করুন। কিছুক্ষণের জন্য, এটি একটি ত্রুটিপূর্ণ সংখ্যার ত্রুটি দেখিয়েছিল, তবে আমি মনে করি এটি সূচকগুলি তৈরি করার সময় হয়েছিল। আমি যখন ত্রুটিগুলি সনাক্ত করছিলাম তখন তারা আর কোনও পদক্ষেপ না করেই অদৃশ্য হয়ে গেল।


আমি যাচাই না করেই মনে করি যে আপনিও গ্রহন (> গুণাবলী -> সি / সি ++ -> কোর বিল্ড টুলচেইনগুলিতে যেতে পারেন এবং বিভিন্ন পথ সহ সেগুলি সম্পাদনা করতে পারেন তবে আমি নিশ্চিত না যে এটি কী করবে।


0

আমি একটি মিশ্রিত সি এবং সি ++ প্রকল্পের জন্য এলিডিপ সি ++ 2019-03 ব্যবহার করে একই ধরণের সমস্যায় পড়েছিলাম যা স্ট্যান্ড :: :: alচ্ছিক এবং এসটিডি :: অদলবদল ব্যবহার করেছিল। আমার জন্য যা কাজ করেছিল তা ছিল এটি। প্রকল্পে বৈশিষ্ট্য-> সি / সি ++ বিল্ড-> সেটিংস-> সরঞ্জাম সেটিংস-> ক্রস জি ++ সংকলক, বিবিধ থেকে -std = gnu ++ 17 সরান এবং এর পরিবর্তে ডায়ালেক্ট-> অন্যান্য ডায়ালেক্ট ফ্ল্যাগে রাখুন।


0

একটি ক্রস সংকলক ব্যবহার করার সময়, আমি প্রায়শই সহকর্মীদের দ্বারা সাবধানে তৈরি করা উন্নত কাস্টম বিল্ড সিস্টেমগুলি পাই। আমি "বিদ্যমান কোড সহ মেকফিল প্রকল্প" ব্যবহার করি যাতে অন্যান্য উত্তরগুলির বেশিরভাগ প্রযোজ্য হয় না।

প্রকল্পের শুরুতে, আমাকে উল্লেখ করতে হবে যে আমি "বিদ্যমান কোড সহ মেকফিল প্রকল্প" এর জন্য উইজার্ডে একটি ক্রস সংকলক ব্যবহার করছি। বিরক্তিকর বিষয়টি হ'ল গত 10 বা তত বছরগুলিতে, সেই উইজার্ডের ক্রস সংকলক বোতামটি ক্রস সংকলকটি কোথায় রয়েছে তা জিজ্ঞাসা করে না। সুতরাং একটি পদক্ষেপে যা সি ++ সমস্যা এবং ক্রস সংকলক সমস্যার সমাধান করে, আমাকে উপরের @ আরভওয়জডিলার মতো উত্তর দ্বারা উল্লিখিত হিসাবে সরবরাহকারীদের ট্যাবে যেতে হবে, তবে আমাকে যে সরবরাহকারীর নির্বাচন করতে হবে তা হ'ল ক্রস সংকলক সরবরাহকারী। তারপরে কমান্ড বাক্সে আমি সংকলকটির পুরো পথটি রেখেছি এবং আমি সি ++ স্ট্যান্ডার্ডের জন্য -std = gnu ++ 11 যুক্ত করি যার জন্য আমি সমর্থন পেতে চাই। এটি যেমন কাজ করে তেমনি প্রত্যাশাও করা যায়।

আপনি একটি বিদ্যমান প্রকল্পে এটি করতে পারেন। আপনাকে কেবলমাত্র যা করতে হবে তা হ'ল সূচকটি পুনরায় চালু করা।

আমাকে কখনও পরীক্ষামূলক পতাকা যুক্ত করতে বা ওভাররাইড করতে হয়নি __cplusplus এর সংজ্ঞা। একমাত্র বিষয়, আমার কাছে যদি প্রচুর পরিমাণে সি সি কোড থাকে তবে আমার কাছে সি-নির্দিষ্ট স্ট্যান্ডার্ড বিকল্পটি রাখার আর কোথাও নেই।

এবং যখন বিষয়গুলি সত্যই খারাপভাবে চলেছে তখন একটি সূচকী লগ প্রাপ্তি, সূচক সাবমেনুতে সেই আদেশটি ব্যবহার করে খুব তথ্যমূলক হতে পারে।

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