আমি কীভাবে ভিজুয়াল স্টুডিও এক্সপ্রেস 2005 এর সাথে সম্পূর্ণ পরিসংখ্যানতভাবে যুক্ত .exe বানাতে পারি?


109

আমার বর্তমান পছন্দসই সি ++ পরিবেশটি হ'ল বিনামূল্যে এবং মূলত দুর্দান্ত মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও 2005 এক্সপ্রেস সংস্করণ। সময়ে সময়ে আমি আনন্দদায়ক ফলাফল সহ অন্যান্য ব্যক্তির কাছে মুক্তি .exe ফাইলগুলি প্রেরণ করেছি। তবে সম্প্রতি আমি বিরক্তিকর আবিষ্কার করেছিলাম যে আনন্দদায়ক ফলাফলগুলি আমার আরও ভাগ্যের ভিত্তিতে ছিল। পুরানো (2001 ভিনটেজ, ভ্রষ্টভাবে আপডেট করা হয়নি) এই প্রোগ্রামগুলির মধ্যে একটি চালানোর চেষ্টা করা XP বক্স আমাকে একটি বাজে "সিস্টেম x.exe চালাতে পারে না" (বা অনুরূপ) বার্তা ছাড়া কিছুই দেয়নি।

কিছু গুগলিং প্রকাশ করেছে যে এই সরঞ্জামসেটের মাধ্যমে এমনকি স্ট্যাটিক লিঙ্কিংয়ের ফলাফলগুলি নির্দিষ্ট হেলো-ওয়ার্ল্ড.এক্সেতে অতিরিক্ত অতিরিক্ত .dll ফাইলের উপর নির্ভর করে (এমএসভিসিএম 80.ডিল ইত্যাদি) নির্দিষ্ট করে। একটি অবিশ্বাস্যভাবে বিস্তৃত সংস্করণ স্কিমিং সিস্টেম (ম্যানিফেস্ট ফাইলগুলি কারও?) তারপরে .exe ঠিক সঠিক .dll সংস্করণ ছাড়াই চলতে দেবে না। আমি এই জিনিসটি চাই না বা চাই না, আমি কেবল একটি পুরানো ফ্যাশনযুক্ত স্ব অন্তর্ভুক্ত চাই ex উদাহরণস্বরূপ, সর্বনিম্ন সাধারণ ডিনোমিনেটর উইন 32 অপারেশন ছাড়া আর কিছুই করেন না এবং কোনও পুরানো উইন 32 ওএসে চলে।

আমার বিদ্যমান টুলসেটটি দিয়ে আমি যা করতে চাই তা করা সম্ভব কিনা তা কি কেউ জানেন?

ধন্যবাদ.

উত্তর:


126

সি-রানটাইমের জন্য প্রকল্পের সেটিংসে যান, সি / সি ++ তারপরে 'কোড জেনারেশন' চয়ন করুন। 'রানটাইম লাইব্রেরি' সেটিংসকে 'মাল্টিথ্রেডেড ডিএলএল' এর পরিবর্তে 'মাল্টিথ্রেডেড' এ পরিবর্তন করুন।

আপনি যদি অন্য কোনও লাইব্রেরি ব্যবহার করছেন তবে আপনার লিঙ্কারকে স্পষ্টভাবে গতিযুক্ত লিঙ্কযুক্ত সিআরটি উপেক্ষা করার জন্য বলতে হবে।


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

6
ম্যান 300 অক্ষর অনেক নয়। উপরের মন্তব্যটি অস্পষ্ট থাকলে, সমস্যাটি হ'ল আপনার .cpp ফাইল এবং যে কোনও লাইব্রেরি .cpp ফাইল উভয়ই 'মাল্টিথ্রেডড dll' এর পরিবর্তে 'মাল্টিথ্রেড' হওয়া দরকার অন্যথায় আপনি লিঙ্ক ত্রুটি পেতে পারেন।
বিল ফরস্টার

এটি হিপ পরিচালন সম্পর্কিত অসংখ্য সমস্যাগুলির সাথে পরিচয় করিয়ে দেয় যা আপনি সম্ভবত কিছু করতে চান না।
এডওয়ার্ড স্ট্রেঞ্জ

সিআরটি লাইব্রেরির জন্য, ভিএস / এমডি এবং / এমটি বিকল্প সরবরাহ করে। তবে, অন্যান্য লাইব্রেরিগুলি স্থিরভাবে সাধারণভাবে সংযুক্ত করার বিষয়ে - বলুন, libX.lib (যা আমার নিজস্ব গ্রন্থাগার বা তৃতীয় পক্ষের গ্রন্থাগার হতে পারে)?
কিরণ এমএন

4
আমি পেতে error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease'। বিল্ডটির ধরণ পরিবর্তন করার মতো অন্য কোথাও কি আছে? আমি ডাব্লুএক্সউইগেটস অ্যাপ্লিকেশন তৈরি করছি, অনেকটা @ বিলফোরস্টার এর মতো। তাহলে কি আমাকে ডাব্লুএক্সউজেডগুলি পুনর্নির্মাণ করতে হবে ? আমি কেমন করে ঐটি করি?
টোমা জ্যাটো - মনিকা

18

ভিজ্যুয়াল স্টুডিও ২০১০-এ আমার অভিজ্ঞতা হ'ল ডিএলএল প্রয়োজন না হওয়ায় দুটি পরিবর্তন দরকার। প্রকল্পের সম্পত্তি পৃষ্ঠা থেকে (সমাধান এক্সপ্লোরার উইন্ডোতে প্রকল্পের নামের উপর ডান ক্লিক করুন):

  1. কনফিগারেশন বৈশিষ্ট্য -> সাধারণ অধীনে, "একটি স্ট্যাটিক লাইব্রেরিতে এমএফসি ব্যবহার করুন" "এমএফসি ব্যবহার" ক্ষেত্রটি পরিবর্তন করুন।

  2. কনফিগারেশন বৈশিষ্ট্য -> সি / সি ++ -> কোড উত্পন্নকরণের অধীনে, "রানটাইম লাইব্রেরি" ক্ষেত্রটি "মাল্টি-থ্রেডড (/ এমটি)" এ পরিবর্তন করুন

কেন দুজনের প্রয়োজন ছিল তা নিশ্চিত নয়। আমি এটি glut32.dll এর উপর নির্ভরতা অপসারণ করতে ব্যবহার করেছি।

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


1
এটি একটি সামান্য সংযোজন সহ ভিজ্যুয়াল স্টুডিও 2013 এ কাজ করে বলে মনে হচ্ছে: আমাকে কনফিগারেশন বৈশিষ্ট্য -> সাধারণ -> অক্ষর সেটটি "ইউনিকোড অক্ষর সেট ব্যবহার করুন" এ পরিবর্তন করতে হয়েছিল।
gnovice

4

আমারও একই নির্ভরতা সমস্যা ছিল এবং আমি আরও জানি যে আপনি ভিএস 8.0 ডিএলএল অন্তর্ভুক্ত করতে পারেন (কেবল মুক্তি! ডিবাগ নয়! --- এবং আপনার প্রোগ্রামটিও মুক্তি দিতে হবে) যথাযথ নামের একটি ফোল্ডারে, আপনার .exe সহ মূল ফোল্ডার:

কীভাবে: এক্সকপি (এমএসডিএন) ব্যবহার করে মোতায়েন করুন

এছাড়াও নোট করুন যে আপনার যদি একই স্ট্যাটিকালি লিঙ্কযুক্ত .exe- এ সি ++ এবং সি কোড থাকা প্রয়োজন তবে বিষয়গুলি অজানা হওয়ার গ্যারান্টিযুক্ত কারণ আপনি লিঙ্কার বিরোধগুলি পেয়ে যাবেন যা কেবলমাত্র সঠিক লিবিএক্সএক্সএক্স.লাইবকে উপেক্ষা করে এবং তারপরে গতিশীলভাবে সংযুক্ত (ডিএলএল) দ্বারা সমাধান করা যেতে পারে because ।

শেষ অবধি, উইন্ডোজ 2000 এবং তারপরে সঠিক ডিএলএল ইনস্টল করা হওয়ার পরে, একটি আলাদা সরঞ্জামসেটের (ভিসি ++ 6.0) জিনিসগুলি "কেবলমাত্র কাজ করে" "


1

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

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


2
পুনরায় বিতরণযোগ্য প্যাকেজিংটি পছন্দসই সমাধান বলে মনে হচ্ছে, পুনরায় বিতরণযোগ্য ইনস্টলারটি চালনার জন্য আপনার অ্যাডমিন প্রাইভেস প্রয়োজন। আপনার যদি কোনও প্রশাসকবিহীন ব্যবহারকারী থাকে তবে এটি একটি কার্যকর বিকল্প নয়।
কেভিন কন্ডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.