মারাত্মক ত্রুটি LNK1104: 'libboost_system-vc110-mt-gd-1_51.lib' ফাইলটি খুলতে পারে না


89

মনে হচ্ছে আমি এটিকে কাজে লাগাতে পারছি না। আমি একটি সাধারণ কনসোল অ্যাপ্লিকেশন তৈরি করেছি (যা websocket++গ্রন্থাগারের উপর নির্ভর করে ) যার জন্য Boostলাইব্রেরি প্রয়োজন .. তবে যখন আমি সংকলনের চেষ্টা করি তখন আমি পাই:

মারাত্মক ত্রুটি LNK1104: 'libboost_system-vc110-mt-gd-1_51.lib' ফাইলটি খুলতে পারে না

যাইহোক, আমি বিজামটি দিয়েছিলাম যা লিব তৈরি করেছিল (boost_root)/stage/libsএবং আমি লিপগুলির সাথে পথটি সংকলকের সাথে সংযুক্ত করেছি C++/Additionnals includes

আমি যদি (boost_root)/stage/libsফাইলটি libboost_system-vc110-mt-gd-1_51.libদেখি তবে সেখানে নেই। libboost_system-vc110-mt-sgd-1_51.libপরিবর্তে এটি বলা হয়।

কোন ধারণা?


4
আমি libboost_system-vc110-mt-gd-1_51.lib ফাইলটি বজামের সাথে একটি সম্পূর্ণ বিল্ড তৈরি করতে সক্ষম হয়েছি তবে আমি এখনও ত্রুটি পেয়েছি।
রুশিনো

22
খুলুন VS2012 developer command prompt, আপনার বুস্ট রুট ডিরেক্টরিতে যান এবং টাইপ করুন bootstrap, এবং তারপরে টাইপ করুন b2এবং আপনার লাইব্রেরি ফাইলগুলির একটি সম্পূর্ণ সেট পাওয়া উচিত।
জেসি গুড

আপনি কি আপনার প্রকল্পে অন্তর্ভুক্ত পাথ এবং লিঙ্কার পাথ যুক্ত করেছেন?
জেসি গুড

4
আপনি কি দিয়ে আপনার অ্যাপ্লিকেশন তৈরি করছেন /MD?
মহেশ

যদি সংকলনের পরিবর্তে ডাউনলোড করা ঠিক হয় তবে এখান থেকে এই লিবগুলি
গোরোগম

উত্তর:


93

সি ++ → সাধারণ → অতিরিক্ত ডিরেক্টরি অন্তর্ভুক্ত করুন প্যারামিটার ডিরেক্টরি যেখানে কম্পাইলার হেডার ফাইল অনুসন্ধান করবে তালিকা জন্য।

লিঙ্কারে কোথায় লিঙ্ক করার জন্য লাইব্রেরি সন্ধান করতে হবে আপনাকে তা বলতে হবে। এই সেটিংটি অ্যাক্সেস করতে সলিউশন এক্সপ্লোরার উইন্ডোতে প্রকল্পের নামটিতে ডান ক্লিক করুন , তারপরে বৈশিষ্ট্য ties লিংক → সাধারণ → অতিরিক্ত গ্রন্থাগার ডিরেক্টরি<boost_path>\stage\libএখানে প্রবেশ করুন (আপনি ডিফল্ট বিকল্পগুলি ব্যবহার করে বুস্ট তৈরি করলে লাইব্রেরিগুলি এমনই পথ যেখানে )।


বুস্ট_পথ কী তা আপনি আমাকে ব্যাখ্যা করতে পারেন
ggsmarboy

4
@ggsmarboy এটি সেই পথ যেখানে বুস্ট সোর্স ফাইলগুলি রয়েছে (আপনি যে সংকলনটি সংকলনে তালিকাভুক্ত করেছেন সেই পথেই পাথগুলি অন্তর্ভুক্ত থাকে যাতে এটি বুস্ট শিরোনামগুলি খুঁজে পেতে পারে)। উত্তরটি ধরে নেওয়া হয়েছে যে আপনি ডিফল্ট বিল্ড বিকল্পগুলি ব্যবহার করে নিজেকে উত্সাহিত করেছেন (বিতরণ ব্যবহার করছেন না)।
প্রিটোরিয়ান

অসাধারণ. আমাকেও সত্যিকারের মাথাব্যথা বাঁচিয়েছে। কেন আমি বুস্ট ডকুমেন্টেশনে এটি স্পট করতে অক্ষম বলে মনে হয়েছিল (এটি যদি সেখানে থাকে) তবে আমি জানি না! :)
অনুপস্থিত মাইনদেডুক

4
এই উত্তরে উল্লিখিত সেটিংসটি সন্ধান করা হয় যদি আপনি প্রকল্পটিতে ডান ক্লিক করেন এবং বৈশিষ্ট্যগুলি বেছে নেন (আমার মতো নুবুদের জন্য, সমাধানটিতে ডান ক্লিক করে, সরঞ্জামসমূহ> বিকল্পসমূহে যান ইত্যাদি Those বিকল্পগুলি আমার সমস্ত প্রকল্পে উপস্থিত না থাকলে)। ভিএস2013
মিস্টার_আর_মিরস_ডি

4
@ মিঃ_আর_আমস_ডি আপনি ঠিক বলেছেন, আমি অনুমান করেছি পাঠক সেই অংশটি জানেন। আপডেট হয়েছে।
প্রিটোরিয়ান

97

এটি আমার মতো অপেশাদারদের পক্ষে সবচেয়ে সহজ উপায় যারা নিজেরাই সি ++ পড়াচ্ছেন:

প্রথমে আপনার পছন্দের যে কোনও ডিরেক্টরিতে বুস্ট লাইব্রেরিটি আনজিপ করুন। আমি সুপারিশ c:\directory

  1. আপনার ভিজ্যুয়াল সি ++ খুলুন।
  2. একটি নতুন প্রকল্প তৈরি করুন।
  3. প্রকল্পে রাইট ক্লিক করুন।
  4. সম্পত্তি ক্লিক করুন।
  5. সি / সি ++ এ ক্লিক করুন।
  6. সাধারণ ক্লিক করুন।
  7. অতিরিক্ত অন্তর্ভুক্ত লাইব্রেরি নির্বাচন করুন।
  8. গ্রন্থাগারের গন্তব্য অন্তর্ভুক্ত করুন। যেমন c:\boost_1_57_0
  9. প্রাক-সংকলক শিরোনাম ক্লিক করুন।
  10. তৈরি / প্রাক-সংকলিত শিরোলেখ ক্লিক করুন।
  11. প্রাক-সংকলিত শিরোলেখ ব্যবহার না করে নির্বাচন করুন।

তারপরে লিংক লাইব্রেরিতে যান আপনি কি নিজের সমস্যাগুলি অনুভব করেছিলেন?

  1. নিষ্ক্রিয় ফাইল ছিল যান c:\boost_1_57_0
  2. ক্লিক করুন booststrap.bat(কমান্ড উইন্ডোতে টাইপ করতে বিরক্ত করবেন না শুধু অপেক্ষা করুন এবং আমার যে সমস্যাটি সমাধান করতে আমার দুই সপ্তাহ লেগেছিল সেই জায়গাটি সেই উইন্ডোটি বন্ধ করবেন না a কিছুক্ষণ পর পর booststrapচালানো হবে এবং একই ফাইলটি তৈরি করবে, তবে এখন দুটি পৃথক নাম সহ: b2এবং bjam
  3. ক্লিক করুন b2এবং এটি চালানোর জন্য অপেক্ষা করুন ।
  4. ক্লিক করুন bjamএবং এটি চালানোর জন্য অপেক্ষা করুন । তারপরে একটি ফোল্ডার কল করা হবে stage
  5. প্রকল্পে রাইট ক্লিক করুন।
  6. সম্পত্তি ক্লিক করুন।
  7. লিঙ্কারে ক্লিক করুন।
  8. সাধারণ ক্লিক করুন।
  9. অতিরিক্ত লাইব্রেরি ডিরেক্টরি অন্তর্ভুক্ত ক্লিক করুন।
  10. লাইব্রেরির অংশটি নির্বাচন করুন যেমন c:\boost_1_57_0\stage\lib

এবং আপনি যেতে ভাল!


4
অনেক ধন্যবাদ উ জাই - আমি এর আগে এর আগে কখনও কিছু করিনি এবং এই পদক্ষেপগুলি বুস্ট তৈরি করতে এবং নিখোঁজ 'libboost_serialization-vc140-mt-gd-1_57.lib' লাইব্রেরি ফাইলটি যুক্ত করতে আমার যে সমস্যাটি হয়েছিল তা উত্পন্ন করার জন্য আমার যা প্রয়োজন ছিল তা হ'ল: )
Vixxd

6
ধন্যবাদ, আমি সুন্দর বিস্তারিত নির্দেশনা পছন্দ করি। বুস্ট সেটআপ করার 2/3/4 পদক্ষেপের জন্য, আমি পরিবর্তে যা করেছি তা ছিল: ক) রুট হিসাবে একটি কমান্ডলাইন প্রম্পট খুলুন ; খ) বুস্ট_1_57_0 ডিরেক্টরিতে পরিবর্তন করুন; গ) প্রকার bootstrap.bat(এটি 10-20 সেকেন্ড সময় নিয়েছে); d) ./b2নির্দেশিত হিসাবে টাইপ করুন (এটি সম্পূর্ণ হতে 30-40 মিনিট সময় নেয়)।
ড্যারেন কুক

4
আমি খুলতে হয়েছিল ভিজ্যুয়াল স্টুডিও কমান্ড প্রম্পটটি ব্যবহার করে বুটস্ট্র্যাপ.বাট, কারণ নিয়মিত কমান্ড প্রম্পট কীভাবে 'ক্লিপ' কমান্ডটি প্রসেস করতে হয় তা জানত না।
jlaverde

2/20/2018, আপনার সমাধান আমার পক্ষে কাজ করে (VS2017 + 1.66 বুস্ট করুন)। তোমাকে অনেক ধন্যবাদ.
CaTx

নতুনদের জন্য পদক্ষেপগুলির জন্য আপনাকে ধন্যবাদ। আমি আশা করি আপনারা যেমন উত্তর দিয়েছিলেন সবাই সর্বদা উত্তর দিন।
মুহিত জৈন

6

আমারও একই সমস্যা ছিল। এটি কারণ হয়েছিল যে আমি বুস্টটি ভিজ্যুয়াল সি ++ 2010 (ভি 100) দিয়ে সংকলন করেছি এবং আমি ভুল করে ভিজ্যুয়াল স্টুডিও 2012 (v110) দিয়ে লাইব্রেরিটি ব্যবহার করার চেষ্টা করেছি।

সুতরাং, আমি কনফিগারেশনগুলি পরিবর্তন করেছি (ভিজ্যুয়াল স্টুডিও 2012-এ) প্রোজেক্ট বৈশিষ্ট্যে যাচ্ছি -> সাধারণ -> প্লাটফর্ম টুলসেট এবং ভিজ্যুয়াল স্টুডিও 2012 (v110) থেকে ভিজ্যুয়াল স্টুডিও 2010 (ভি 100) এ পরিবর্তন করেছি


7
আমি আশা করি আপনি বুঝতে পেরেছেন যে আপনি যখন প্ল্যাটফর্মের সরঞ্জামসেটটি ভি 100 ব্যবহারের জন্য পরিবর্তন করবেন, আপনি ভিএস ২০১২ আইডিইকে ভিএস2010 এর সাথে প্রেরিত সংকলকটি ব্যবহার করতে বলছেন। ভিএস ২০১২ সংকলকটিতে যে কোনও সি ++ 11 বৈশিষ্ট্য যুক্ত ছিল সেগুলি পাওয়া যাবে না। ভিএস2012 সংকলকটি ব্যবহার করে বুস্টকে সংকলন করার একটি আরও ভাল সমাধান; আপনার কাছে 2010 এবং 2012 উভয় থেকেই উত্পন্ন গ্রন্থাগার থাকতে পারে কারণ বুস্ট সংকলক সংস্করণ নম্বরটি আউটপুট ফাইলের নামগুলিতে রাখে।
প্রিটোরিয়ান

আপনি ঠিক বলেছেন এবং আমি সচেতন। আমি লাইব্রেরিগুলি এবং সংকলকটি আপগ্রেড করলে কী ঘটতে পারে সে সম্পর্কে আমি ভীত। সুতরাং, প্রকল্পটি শেষ হলে আমি এই সমস্ত জিনিস ঠিক করব। ধন্যবাদ!
জোটা সান্তোস 21

6

তবুও আরেকটি সমাধান:

আমি স্ট্যাম্পড হয়ে গিয়েছিলাম কারণ আমি আমার লিঙ্ক-> অতিরিক্ত নির্ভরতা সম্পত্তিগুলিতে boost_regex-vc120-mt-gd-1_58.lib অন্তর্ভুক্ত ছিল, কিন্তু লিঙ্কটি আমাকে বলে চলেছে যে এটি libboost_regex-vc120-mt-gd-1_58.lib খুলতে পারে না ( lib উপসর্গ নোট করুন)। আমি libboost_regex-vc120-mt-gd-1_58.lib নির্দিষ্ট করিনি।

আমি বুস্ট ডায়নামিক লাইব্রেরি (.dlls) ব্যবহার করার চেষ্টা করছিলাম (কিন্তু নির্মিত হয়েছিল) তবে BOOST_ALL_DYN_LINK ম্যাক্রো সংজ্ঞায়িত হয়নি। স্পষ্টতই একটি লাইব্রেরি অন্তর্ভুক্ত করার জন্য সংকলনগুলিতে ইঙ্গিত রয়েছে এবং BOOST_ALL_DYN_LINK ব্যতিরেকে এটি স্ট্যাটিক লাইব্রেরিটির (স্বেচ্ছাসেবীর উপসর্গ সহ) সন্ধান করে, গতিশীল পাঠাগারটি নয় (কোনও পূর্বশব্দ ছাড়াই) library


এখনও মাত্র 1 টি আপভোট, তবুও আমি প্রতি কয়েকমাস এখানে নিজেকে খুঁজে পাই, আমার সমস্যার সমাধান কী তা আবার মনে করিয়ে দেওয়া হচ্ছে !!
নীল গ্যাটেনবি

3

আমার একই সমস্যা ছিল এবং আমার ভুলটি হ'ল আমি ভিজ্যুয়াল সি ++ ২০১০ এর সাথে ব্যবহারের জন্য বাইনারি বুস্ট_1_55_0-msvc-11.0-32.exe ইনস্টল করেছি যার সংস্করণ v100 (প্রকল্পের বৈশিষ্ট্য-> কনফিগারেশনপ্রোপারটিস> জেনারেল-> প্ল্যাটফর্মটিউসেট) v110 নয় ভিজ্যুয়াল সি ++ ২০১২ হিসাবে।


2

যদি আপনি কষ্ট ভবন বুস্ট থাকে বা যে কাজ করতে না চান, একটি বিকল্প থেকে liberal এর সংক্ষিপ্ত রূপ ফাইল ডাউনলোড হয় সোর্সফোর্জ । লিঙ্কটি আপনাকে 1.51 সংস্করণে জিপড লিব এবং dll ফাইলের ফোল্ডারে নিয়ে যাবে। তবে, পছন্দের সংস্করণ নির্দিষ্ট করতে আপনার লিঙ্কটি সম্পাদনা করতে সক্ষম হওয়া উচিত। স্পষ্টতই বুস্টপ্রো থেকে ইনস্টলারটির কিছু সমস্যা রয়েছে।


2

ভিজ্যুয়াল স্টুডিও 2015 (সম্প্রদায় সংস্করণ) -এ বুস্ট ইউনিট টেস্টিং ব্যবহার করার চেষ্টা করার সময় আমার একই সমস্যা হয়েছিল :

মারাত্মক ত্রুটি LNK1104: libboost_unit_test_framework-vc140-mt-1_57

তাই আমি ভেবেছিলাম আমি আমার সমাধানটি ভাগ করব।

আপনি দুটি উপায়ে একটি বুস্ট ইউনিট টেস্টিং প্রকল্প তৈরি করতে পারেন (এবং এই সমাধান উভয়ের পক্ষে কার্যকর হয়):

  1. বুস্ট ইউনিট টেস্ট অ্যাডাপ্টার ব্যবহার করে
  2. বা একটি Win32 কনসোল অ্যাপ্লিকেশন তৈরি করে ( এখানে পদক্ষেপগুলি ), এবং একটি বুস্ট ইউনিট পরীক্ষামূলক ফাংশন ( এখানে পদক্ষেপ ) সহ মূল ফাংশনটি প্রতিস্থাপন করে ।

উভয় প্রকল্পের কাজ পেতে আমি যে পদক্ষেপগুলি অনুসরণ করেছি তা এখানে:

প্রথমে কাঙ্ক্ষিত বুস্ট সংস্করণটি ডাউনলোড করুন (উদাহরণস্বরূপ, বুস্ট_1_57_0 )। আপনি হয় সঠিক বাইনারি (এমএসভিসি v140 ব্যবহার করে সংকলিত) দিয়ে বুস্ট ডাউনলোড করতে পারেন, বা কমান্ড লাইন থেকে নিম্নলিখিত কমান্ডগুলি চালিয়ে বাইনারিগুলি নিজেই বের করতে পারেন:

  1. bootstrap.bat
  2. "সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও 14.0 \ ভিসি \ vcvarsall.bat" x86
  3. bjam - ক্যালান
  4. bjam -j4 --debug-प्रतीকগুলি = অন - বিল্ড টাইপ = সম্পূর্ণ টুলসেট = এমএসভিসি -14.0 থ্রেডিং = বহু রানটাইম-লিঙ্ক = ভাগ করা ঠিকানা-মডেল = 32

যেখানে এমএসভিসি -১.0.০ উল্লেখ করে যে আমাদের ভিজ্যুয়াল স্টুডিও 2015 সংস্করণ (ভিএস 2015 = ভি 14.0 = ভি 140) প্রয়োজন, এবং ঠিকানা-মডেল = 32 উল্লেখ করে যে আমাদের প্ল্যাটফর্ম 32 প্রয়োজন (তবে এটি 64 বিটের জন্য করা যেতে পারে)।

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

  • ভিজ্যুয়াল স্টুডিও 2015 (v140) এ " জেনারেল> প্ল্যাটফর্ম টুলসেট " সেট করুন ।

  • বুস্ট ফোল্ডারের পথ (যেমন সি: \ বুস্ট_1_57_0) এবং বাইনারি ফাইল (যেমন সি: st boost_1_57_0 \ পর্যায় \ lib) সহ সাবফোল্ডারের পাথ অন্তর্ভুক্ত করুন:

    • " সি \ সি ++> অতিরিক্ত অন্তর্ভুক্ত ডিরেক্টরি "
    • এবং " লিঙ্কার> অতিরিক্ত গ্রন্থাগার ডিরেক্টরি "।

1

বি 2 -j% কোর% টুলসেট =% এমএসভিসিভার% অ্যাড্রেস-মডেল = 64 আর্কিটেকচার = এক্স 86 লিঙ্ক = স্ট্যাটিক থ্রেডিং = মাল্টি রানটাইম-লিংক = ভাগ করা - বিল্ড টাইপ = ন্যূনতম পর্যায় - স্টেজডির = স্টেজ / এক্স 64

বৈশিষ্ট্যগুলি → লিঙ্কার → সাধারণ → অতিরিক্ত গ্রন্থাগার ডিরেক্টরিসমূহ B (BOOST) \ পর্যায় \ x64 \ lib


এই রেখাগুলি কী করছে এবং কেন -> এই উত্তরের গুণমান উন্নত করতে সহায়তা করবে সে সম্পর্কে আরও কিছুটা ব্যাখ্যা।
আন্তন মেনশভ

0

আমি এখানে একই সমস্যা রিপোর্ট ছিল। আমি সাবটোল্ডার সিআরসি / মেইন টেস্ট / থেকে মূল ফোল্ডারে এসসিআর-তে মূলটেষ্ট.সি.পি. স্থানান্তরিত সমস্যাটি সমাধান করেছি / আমার ধারণা এটিও আপনার সমস্যা ছিল।


0

2>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc120-mt-sgd-1_55.lib

আমার ক্ষেত্রে, বুটস্ট্র্যাপ / বিজাম উপলভ্য ছিল না পুরানো উত্তরাধিকারসূত্রে প্রাপ্ত প্রকল্পে (গ্রন্থাগারগুলি পূর্বনির্ধারিত এবং এসসিএমের কাছে প্রতিশ্রুতিবদ্ধ ছিল)। গ্রন্থাগারগুলিতে তাদের ফাইলের নামগুলিতে ভিসি বা বুস্ট সংস্করণ নেই যেমন: libboost_regex-mt-sgd.libতবে Processed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.libকোনওরকম স্বয়ংক্রিয়ভাবে ট্রিগার হয়েছিল।

ম্যানুয়ালি নন-সংস্করণযুক্ত ফাইলের নাম যুক্ত করে ঠিক করা হয়েছে:

<AdditionalDependencies>$(DK_BOOST)\lib64\libboost_regex-mt-sgd.lib</AdditionalDependencies>

এবং কালোতালিকাভুক্ত ...vc120-mt-sgd-1_55.libমধ্যে

<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.