প্রোগ্রামটি শুরু হতে পারে না কারণ libgcc_s_dw2-1.dll অনুপস্থিত


166

আমি কোড :: ব্লক সহ সি ++ তে একটি সাধারণ প্রোগ্রাম তৈরি করেছি।

যদি আমি কোড :: ব্লকগুলি থেকে এটি চালনা করি তবে এটি সঠিকভাবে কাজ করে; তবে যদি আমি এক্সিকিউটেবল ফাইলটিতে ডাবল ক্লিক করে এটি চালনা করি তবে একটি উইন্ডো এই বার্তাটি পপ আপ করবে:

প্রোগ্রামটি শুরু হতে পারে না কারণ libgcc_s_dw2-1.dll আপনার কম্পিউটার থেকে অনুপস্থিত।
এই সমস্যাটি সমাধান করার জন্য প্রোগ্রামটি পুনরায় ইনস্টল করার চেষ্টা করুন।

তাহলে সমস্যাটা কি? এটি ঠিক করতে আমার কী করতে হবে?

উত্তর:


196

আমি বিশ্বাস করি এটি একটি মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও সেটআপের পরিবর্তে একটি MinGW / gcc সংকলক সমস্যা iler

libgcc_s_dw2-1.dllকম্পাইলার এর bin ডিরেক্টরীতে হওয়া উচিত। রানটাইম সংযোগের জন্য আপনি এই ডিরেক্টরিটি আপনার PATH এনভায়রনমেন্ট ভেরিয়েবলের সাথে যুক্ত করতে পারেন বা আপনার সংকলক পতাকাগুলিতে "-static-libgcc -static-libstdc ++" যুক্ত করে সমস্যাটি এড়াতে পারেন।

যদি আপনি এক্সিকিউটেবল বিতরণ করার পরিকল্পনা করেন তবে সম্ভবত সম্ভবত সবচেয়ে বেশি অর্থবোধ করা যায়। যদি আপনি এটি কেবল নিজের মেশিনে চালানোর পরিকল্পনা করেন, PATH এনভায়রনমেন্ট ভেরিয়েবল পরিবর্তন করা একটি আকর্ষণীয় বিকল্প (এক্সিকিউটেবলের আকারকে কমিয়ে রাখে)।

আপডেট করা হয়েছে:

গ্রেগ ট্রেলেভেনের প্রতিক্রিয়ার ভিত্তিতে (নীচে মন্তব্যগুলি দেখুন), আমি এতে লিঙ্কগুলি যুক্ত করছি:

[কোডের স্ক্রিনশট :: ব্লকগুলি "প্রকল্পের বিল্ড অপশন"]

[জিএনইউ জিসিসি লিঙ্ক বিকল্পগুলি]

আধুনিক আলোচনা অন্তর্ভুক্ত -static-libgccএবং -static-libstdc++linker অপশন।


আমার কাছে @ xRobot এর মতো একই সমস্যা রয়েছে এবং সংকলক পতাকাগুলিতে স্টাফ যুক্ত করার জন্য আমি কোথাও খুঁজে পাইনি, তাই আমি এটিকে অন্যান্য বিকল্পগুলিতে, তারপরে লিংক বিকল্পগুলিতে যুক্ত করার চেষ্টা করেছি এবং ত্রুটি বার্তাটি এখনও ঘটেছে। আমি যা করছি তাতে কিছু ভুল আছে?
গ্রেগ ট্রেলেভেন

@ গ্রেগ ট্রেলেভেন: কেবল স্পষ্টতার জন্য আপনি কোড :: ব্লক দিয়ে একটি এক্সিকিউটেবল নির্মাণ করছেন, এটি আইডিইর ভিতরে প্রত্যাশার মতো কাজ করে তবে একটি ত্রুটি বলে "শুরু করতে পারে না কারণ আপনি যখন এটি চালানোর চেষ্টা করছেন তখন libgcc_s_dw2-1.dll অনুপস্থিত" আইডিই এর বাইরে আপনি সংকলকের বিন ডিরেক্টরিটি পরীক্ষা করেছেন এবং হ্যাঁ, এই ডিএলএলটি আসলে সেখানে রয়েছে। আপনি একটি স্থিতিশীল লিঙ্কেজ করে সমস্যাটি সমাধানের চেষ্টা করছেন, যা একটি লাইব্রেরি থেকে সংকলিত কোডটি টানছে যাতে DLL (রানটাইম লিঙ্কেজ) প্রয়োজন হয় না, তবে এটি কাজ করছে না। দুটি পরামর্শ: একটি পরিষ্কার বিল্ড করুন (বিকল্পগুলি পুনর্নির্মাণের কারণ হতে পারে না), এবং PATH ভেরিয়েবল যুক্ত করার চেষ্টা করুন।
হার্ডম্যাথ

@ হার্মাথ: পরিষ্কার-পরিচ্ছন্ন পুনর্নির্মাণের পরেও কাজ করছেন না, সুতরাং আমার ধারণা এটি সমাধানের জন্য আমাকে অন্য একটি উপায় ব্যবহার করতে হবে। সাহায্য করার জন্যে ধন্যবাদ.
গ্রেগ ট্রেলেভেন

@ গ্রেগ ট্রেলেভেন: আপনার পাঠপত্রে সংকলকের বিন ডিরেক্টরি যুক্ত করার চেষ্টা করার কারণটি হ'ল স্ট্যান্ডার্ড লাইব্রেরি (ডিএলএল) এর রানটাইম সংযোগের জন্য নির্বাহযোগ্য এখনও নির্মিত হয়েছে তা দেখানো (যদি এটি জিনিসগুলিকে কাজ করে)। আমি ভাবছি যে সমস্যাটি হ'ল এবং আমাদের খুঁজে বের করতে হবে (আপনি যদি গ্রন্থাগারের কোডের স্ট্যাটিক লিঙ্কেজ করতে চান) কোথায় কম্পাইলার পতাকা লাগাতে হবে।
হার্ডম্যাথ

4
এই আলোচনা চলতে থাকে (এবং মীমাংসিত হয়) এখানে
ডেভিড সি

37

Eclipse এ, আপনি প্রকল্পের বৈশিষ্ট্য> সি / সি ++ বিল্ড> সেটিংস> মিনিজিডব্লু সি ++ লিংক> বিবিধের নীচে এটি দেখতে পাবেন

আপনাকে অবশ্যই এটি শীর্ষে "লিঙ্কার পতাকাগুলিতে" যুক্ত করতে হবে; আর কোথাও না. তারপরে কেবল পুনর্নির্মাণ করুন।

গ্রহপ বৈশিষ্ট্যগুলির স্ক্রিনশট

আমি দেখতে পেয়েছি যে এগুলি স্থিতিশীলভাবে সংযুক্ত করার সাথে সাথে অপ্টিমাইজেশনের সাথেও আকারটি 1,400kb অবধি বিস্ফোরিত হয়। ভাগ করা ডিএলএলগুলির অনুলিপি করার তুলনায় এটি 277kb বৃহত্তর। ইউপিএক্সিংয়ের পরে এটি 388 কেবি বৃহত্তর। এখানে খুব হারান / হারান। কেবলমাত্র ডিএলএলগুলি অন্তর্ভুক্ত করুন কারণ শেষ ব্যবহারকারী তাদের মুছে ফেলার সিদ্ধান্ত নিতে পারে বা সেগুলি অন্য কোনও জায়গায় ইনস্টল করা থাকলে তা নয়।


1
নতুন নির্মিত প্রতিটি প্রকল্পে লিঙ্কার পতাকা যুক্ত এড়ানোর কোনও উপায় আছে কি?
রজার এনজি

পাঠকদের জন্য: দয়া করে ছবিতে যুক্ত বিকল্পগুলি নোট করুন। এইটা কাজ করে. এটি একটি রেফারেন্স হিসাবে সহায়তা করে: orfe.princeton.edu/help/article-296
PALEN

10

কোড :: ব্লকস: সেটিংসে '-স্ট্যাটিক' যুক্ত করুন-> সংকলক-> লিংকার সেটিংস-> অন্যান্য লিঙ্কার বিকল্প।


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

সব থেকে ভালো সমাধান !
iyy0v

6

আপনার পিসিতে সেই dll সন্ধান করুন এবং আপনার নির্বাহযোগ্য একই ডিরেক্টরিতে এটি অনুলিপি করুন।


ভিজ্যুয়াল স্টুডিও দিয়ে কেন এটি ঘটে না?
xRobot

1
এটিও করে তবে অন্যান্য ঘরের সাথে। উদাহরণস্বরূপ, যদি আপনার msvcrt90.dll অভাব হয় তবে আপনার ভিজ্যুয়াল সংকলিত প্রকল্পটি আরম্ভ হবে না (যদিও এটি সাধারণত ইনস্টল করা সিস্টেমের প্রশস্ত)
ব্রুস

6

এছাড়াও দেখুন । এটি আমার সমস্যার সমাধান করেছে।

যাইহোক, এটি অবশ্যই compilerপতাকা? সম্ভবত linkerএখানে আরও উপযুক্ত শব্দ?


1
সঠিক টার্মিনোলজির জন্য +1! হ্যাঁ, জিসিসি লিংক অপশনগুলিতে আমার "লিঙ্ক" এটির (একটি স্ট্যাটিক লাইব্রেরির জন্য) কালি ছিল।
হার্ডম্যাথ

5

"Libgcc_s_dw2-1.dll" অনুলিপি করতে মেক.এক্সে করতে হবে। (আপনি যদি Msys ব্যবহার করছেন, এটি \ msys \ বিনে অনুলিপি করুন) নিশ্চিত করুন যে make.exe করার পথটি env তে সেট করা আছে। পাঠ্য (যদি make.exe একটি ফোল্ডারে থাকে "সম্ভবত", এবং আপনার মিসেস রয়েছে, এটি \ এমএসআই \ বিন) সংকলন, রন্ড, ডিবাগ ইত্যাদি খুশি।


5

মিনিজিডাব্লু এইচটিপি সোর্সফোর্জন.নেট গাছে যান। হোম / মিনিজিডাব্লু / বেস / জিসিসি / ভার্সন 4 এর অধীনে (বা যে কোনও সংস্করণ ব্যবহার করা হচ্ছে) / জিসিসি -4 (সংস্করণ) / আপনি জিসিসি-কোর-৪.৮.১-৪-মিংডব 32২-dll.tar.lzma এর মতো একটি ফাইল পাবেন । এটি এক্সট্রাক্ট করুন এবং বিন ফোল্ডারে যান যেখানে আপনি আপনার libgcc_s_dw2-1.dll এবং অন্যান্য dll এর সন্ধান পাবেন। আপনার বিন ডিরেক্টরিতে আপনার যা প্রয়োজন তা অনুলিপি করুন এবং আটকান।


5

আমি আমার সংকলকটির জন্য "g ++" এর পরিবর্তে "gcc" ব্যবহার করে এটি কাটিয়ে উঠতে সক্ষম হয়েছি। আমি জানি এটি বেশিরভাগ মানুষের পক্ষে বিকল্প নয়, তবে ভেবেছিলাম আমি এটি একটি কার্যকরী বিকল্প হিসাবে উল্লেখ করব :)


4

আপনি এটি সিস্টেম 32 বা অন্যদের সাথে করার মতো কিছু করতে পারবেন না ফাইলের ফাইল, যাতে আপনি চালানোর চেষ্টা করেন এমন প্রতিটি প্রোগ্রাম আপনার মেশিনে সমস্যা না করে?

আমার কেবল সেই পথটি দরকার যেখানে এটি রাখা উচিত।

আমি যখনই তৈরি করেছি কোনও প্রোগ্রাম চালাচ্ছি তখনই এটি ডিরেক্টরিতে রেখে দেওয়া বিরক্তিকর ...

সম্পাদনা করুন: আমি সমাধানটি পেয়েছি:

আপনার কম্পিউটারের একটি স্থানে libgcc_s_dw2-1.dll এক্সট্রাক্ট করুন। আমরা আপনাকে libgcc_s_dw2-1.dll অনুরোধ করা প্রোগ্রামটির ডিরেক্টরিতে এটি আনজিপ করার পরামর্শ দিই।

যদি এটি কাজ না করে, আপনাকে আপনার সিস্টেম ডিরেক্টরিতে libgcc_s_dw2-1.dll বের করতে হবে। ডিফল্টরূপে, এটি হ'ল:

  • সি: \ উইন্ডোজ \ সিস্টেম (উইন্ডোজ 95/98 / মি)
  • সি: \ উইনএনটি \ সিস্টেম 32 (উইন্ডোজ এনটি / 2000)
  • সি: \ উইন্ডোজ \ সিস্টেম 32 (উইন্ডোজ এক্সপি, ভিস্তা, 7)

আপনি যদি উইন্ডোজের 64৪-বিট সংস্করণ ব্যবহার করেন তবে আপনারও সি: \ উইন্ডোজ ys সিএসডাব্লু 64৪৪ \

নিশ্চিত যে কোনও বিদ্যমান ফাইল ওভাররাইট করে (তবে আসল ফাইলটির ব্যাকআপ কপি তৈরি করুন)। আপনার কম্পিউটারটি পুনরায় বুট করুন।

যদি সমস্যাটি এখনও থেকে থাকে তবে নিম্নলিখিত চেষ্টা করে দেখুন:

  • উইন্ডোজ স্টার্ট মেনু খুলুন এবং "রান ..." নির্বাচন করুন।
  • সিএমডি টাইপ করুন এবং এন্টার টিপুন (বা আপনি যদি উইন্ডোজ এমই ব্যবহার করেন তবে COMMAND টাইপ করুন)।
  • Regsvr32 libgcc_s_dw2-1.dll টাইপ করুন এবং এন্টার টিপুন।

12
এখানে উত্তর হিসাবে মন্তব্য পোস্ট করবেন না। স্ট্যাক ওভারফ্লো কীভাবে কাজ করে তা নয়। আপনি "কারণ" এর পরিবর্তে "আপনি" এবং "কারণ" এর পরিবর্তে "ইউ" ব্যবহার করতে পারবেন না। চ্যাট স্পোক এখানে বিশেষভাবে অনুমোদিত নয়।
মেগার

4

কেবল সেটিংস >> সংকলক এবং ডিবাগারে যান, তারপরে লিংকার সেটিংস ট্যাবটি ক্লিক করুন এবং "অন্যান্য লিঙ্কার বিকল্পগুলি" সম্পাদনা নিয়ন্ত্রণ এবং পেস্ট করুন: "-স্ট্যাটিক-লিবজিসিসি-স্ট্যাটিক-লিবস্টেডিক ++", সেখানে কোনও সংকলক পতাকা বিকল্প নেই কোড :: ব্লকগুলির জন্য সংকলক পতাকা বিকল্পগুলির মধ্যে তাই এই সমস্যাটি সমাধান করার উপায়, আমি এখানে একটি সমাধান অনুসন্ধান করতে এসেছি এবং "-static-libgcc -static-libstdc ++" সম্পর্কে পোস্ট করা এক লোক সঠিক ধারণা দিয়েছে, এবং আমি বাছাই করে বাকীটিকে দুর্ঘটনাক্রমে বের করেছিলাম কিন্তু এটি কাজ করেছে, ফাইলটি কোডের বাইরে থেকে এখন ক্লিকযোগ্য: ব্লকস, ডেস্কটপ থেকে ঠিক কাজ করে।


3

PATH এনভায়রনমেন্ট ভেরিয়েবলের জন্য সেই dll এর পথ যুক্ত করুন।


ভিজ্যুয়াল স্টুডিও দিয়ে কেন এটি ঘটে না?
xRobot

সম্ভবত কারণ যে dll এর পথটি ভিজ্যুয়াল স্টুডিওর সরঞ্জামসমূহ-> বিকল্পগুলি -> প্রকল্পগুলি এবং সমাধানগুলি -> ভিসি ++ ডিরেক্টরি -> এক্সিকিউটেবল ফাইলগুলিতে তালিকাভুক্ত রয়েছে। ঘরের জন্য পাথ অনুসন্ধান করার সময় ভিজ্যুয়াল স্টুডিও এখানে এবং PATH পরিবেশে পরিবর্তনশীল দেখায়।
বোজন কোমাজেক

2

সংকলনের লাইনে স্ট্যাটিক-লিবজিগিসি সহ সমস্যা সমাধান করে

g++ my.cpp -o my.exe -static-libgcc

মতে: @ হার্মথ

আপনি উদাহরণস্বরূপ MSYS2 এ থাকলে আপনার প্রোফাইলে [। প্রোফাইল ] একটি উপনাম তৈরি করতে পারেন

alias g++="g++ -static-libgcc"

এখন আপনার জিসিসি কমান্ডটিও ;-) হয়ে যায়

আপনার টার্মিনাল পুনরায় আরম্ভ করার জন্য স্মরণকারী


1

অন্যান্য লিঙ্কারের বিকল্পগুলিতে "-স্ট্যাটিক" যুক্ত করুন এই সমস্যাটি সমাধান করে। এটি অন্য সিস্টেমে পরীক্ষা করার পরে আমার একই সমস্যা ছিল, তবে আমার নিজের মতো নয়, তাই আপনি যদি আপনার বিকাশ সিস্টেমে এটি লক্ষ্য না করেন তবে আপনার যদি স্ট্যাটিকভাবে সংযোগ স্থাপন করা হয় তবে আপনার এই সেটটি আছে কিনা তা পরীক্ষা করা উচিত।

আরেকটি নোট, এক্সিকিউটেবল হিসাবে একই ফোল্ডারে ডিএলএল অনুলিপি করা কোনও সমাধান নয় কারণ এটি স্ট্যাটিকালি লিঙ্কিংয়ের ধারণাটিকে পরাস্ত করে।

আর একটি বিকল্প হ'ল MinGW এর টিডিএম সংস্করণ ব্যবহার করা যা এই সমস্যাটি সমাধান করে।

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


0

এমএসএস 2 এর সাথে কাজ করা আমি একটি প্রকল্পটি ডিবাগ পরিবেশে প্রকাশের সংস্করণ চালানোর চেষ্টা করে একই ত্রুটি পেয়েছি। আমার সমস্যার সমাধান সুস্পষ্ট: ডিবাগ প্রতীকগুলির সাথে এক্সিকিউটেবল ব্যবহার করুন।


0

কোডলকগুলিতে আপনি সেটিংসে যেতে পারেন ... সংকলক ... এবং যেকোন একটিতে বেছে নিন) নীল বাক্সে দুটি আইটেম বা 2) সবুজ বাক্সের একটি আইটেম

কোডব্লকগুলি সংকলক সেটিংস


0

আপনি যদি ভাবছেন যে আপনি কোথায় ভাগ করা লাইব্রেরি ডাউনলোড করতে পারেন (যদিও এটি আপনার ক্লায়েন্টের ডিভাইসে কাজ করবে না যদি আপনি ডেলটি অন্তর্ভুক্ত না করেন) এখানে লিঙ্কটি রয়েছে: https://de.osdn.net/projects/mingw/downloads/72215/ libgcc-9.2.0-1-mingw32-Dll-1.tar.xz /

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