ভিজ্যুয়াল স্টুডিও "যে কোনও সিপিইউ" লক্ষ্যটির অর্থ কী?


494

আমার কাছে ভিজুয়াল স্টুডিও ২০০৮ সালে .NET প্ল্যাটফর্ম তৈরির বিকল্পগুলি সম্পর্কিত কিছু বিভ্রান্তি রয়েছে।

"যে কোনও সিপিইউ" সংকলন লক্ষ্য কী এবং এটি কোন ধরণের ফাইল উত্পন্ন করে? আমি এই "যে কোনও সিপিইউ" বিল্ডের নির্বাহযোগ্য আউটপুট পরীক্ষা করে দেখেছি যে তারা x86 এক্সিকিউটেবল (যারা আসতে দেখবে না!)। সুতরাং, x86 বনাম "কোনও সিপিইউ" নির্বাহযোগ্যকে লক্ষ্যমাত্রার মধ্যে পার্থক্য রয়েছে কি?

আরেকটি জিনিস যা আমি লক্ষ্য করেছি, তা হ'ল পরিচালিত সি ++ প্রকল্পগুলির বিকল্প হিসাবে এই প্ল্যাটফর্মটি নেই। কেন এমন? এর অর্থ কি "যে কোনও সিপিইউ" এক্সিকিউটেবলের 32-বিট প্লেইন হওয়ার বিষয়ে আমার সন্দেহটি সঠিক?


4
প্ল্যাটফর্মের জন্য কোন টার্গেটটি ব্যবহার করবেন তা সিদ্ধান্ত নেওয়ার সময় আরও একটি বিষয় বিবেচনা করতে হবে: যদি স্টার্টআপ প্রকল্পের লক্ষ্য হয় Any CPUএবং আপনি একটি 64 বিট ওএস এ চালাচ্ছেন তবে আপনি ডিবাগ করার সময় সম্পাদনা করার এবং চালিয়ে যাওয়ার ক্ষমতা হারাবেন । (আপনি কার্যকরভাবে একটি 64 বিট প্রক্রিয়া ডিবাগ করছেন)। আপনি এটির ডিবাগ করার সময় প্রারম্ভিক প্রকল্প টার্গেটটি পরিণত x86করতে পারেন। (সমাহারগুলি প্রারম্ভে প্রকল্প থেকে রেফারেন্সড লক্ষ্য করা চালিয়ে যেতে পারেন Any CPU
ক্রিস্টিয়ান Diaconescu

8
ভিএস ২০১৩ সহ ক্রিশ্দিডিয়াকোনসুকু সম্পাদনা করুন এবং চালিয়ে যাওয়া এখনই সম্ভব
এমএস ২০০7

আমি মনে করি যে প্রকল্পটি কোনও অ্যাপ্লিকেশন বা ক্লাসের গ্রন্থাগার কিনা তা নিয়ে এখানে কিছু নোট থাকা উচিত, কারণ পরবর্তীটির জন্য লক্ষ্য সাক্ষ্য নির্ধারণ প্ল্যাটফর্মের উপর নির্ভর করে গ্রাসকারী অ্যাপ্লিকেশনগুলিতে এর প্রাপ্যতাকে প্রভাবিত করতে পারে। আমি x86একটি AnyCPUঅ্যাপ্লিকেশন গ্রাহক করে এমন একটি লাইব্রেরি নিয়ে ছুটে এসেছি যেখানে Prefer 32-bitলোডের ত্রুটি এড়াতে আমাকে সেট করতে হয়েছিল।
স্টিভসিংক

উত্তর:


384

একটি CP৪- বিট প্রসেসে লোড হওয়ার পরে কোনও এনসিপিইউ সমাবেশ .৪ -বিট কোডে জিআইটি এবং 32-বিট প্রসেসে লোড হওয়ার পরে 32 বিট কোডে জিত করবে IT

সিপিইউ সীমাবদ্ধ করে আপনি বলবেন: অ্যাসেম্বলি ব্যবহার করে এমন কিছু রয়েছে (সম্ভবত কিছুটা পরিচালনা না করা) যার 32 বিট বা 64 বিট প্রয়োজন।


3
সুতরাং, আমি কীভাবে এসেম্বলি তৈরি করব যা সিটি ++ এ জেআইটি করবে?
গ্যালেটগুলি

50
সি ++ প্রকল্পগুলি দেশীয় কোডে সংকলন করে, তাই জেআইটি সংকলক জড়িত নয় ... সুতরাং, আপনি যা জিজ্ঞাসা করছেন আপনি তা করতে পারবেন না।
cplotts

7
@cplotts: যেহেতু @ গেলেটরা 3 মাস আগে এই প্রশ্নটি জিজ্ঞাসা করেছিল তার সম্ভাবনা তিনি সম্ভবত আপনার উত্তর দেখতে পাবেন। আমি কীভাবে এখানে আছি তার অনুরূপ আপনার মন্তব্যে @ গ্যালেটস উপসর্গটি ব্যবহার করুন যাতে সে আপনার উত্তর সম্পর্কে সতর্কতা পায়।
অ্যান্থনিডাব্লু জোন্স

4
@ অ্যান্থনিডাব্লু জোনস সাধারণভাবে আপনি সঠিক, ব্যবহারকারী যেখানে এই বিষয়ে যেমন প্রশ্নের প্রশ্নের ওপি, তা ছাড়া তারা সমস্ত মন্তব্য সম্পর্কে অবহিত হবে।
মার্ক হুরড

12
@ মার্কহর্ড আসলে এই ক্ষেত্রে, ওপিকে অবহিত করা হবে না। @ এর সিনট্যাক্সের সাথে বিশেষভাবে পিন করা না থাকলে ওপির উত্তরের মন্তব্যে অবহিত হবে না । ওপির কেবলমাত্র তাদের আসল প্রশ্নের সাথে যুক্ত করা মন্তব্যগুলিতে স্বয়ংক্রিয়ভাবে বিজ্ঞপ্তি পাওয়া যায়।
RSW

320

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

আপনি যদি x86 হিসাবে সংকলন করেন, তবে x64 সিস্টেমটি আপনার অ্যাপ্লিকেশনটি ওয়ার্ল্ড 64 এ চালাবে এবং আপনি 32-বিট ডিএলএল ফাইলগুলি লোড করতে সক্ষম হবেন।

সুতরাং আমি মনে করি আপনার যদি নির্ভরতা উভয় পরিবেশে চলতে পারে তবে আপনার "যে কোনও সিপিইউ" নির্বাচন করা উচিত, তবে আপনার যদি 32-বিট নির্ভরতা থাকে তবে x86 চয়ন করুন। মাইক্রোসফ্টের এই নিবন্ধটি এটিকে কিছুটা ব্যাখ্যা করেছে:

/ সিএলআরমিগেটাইপ (সিএলআর চিত্রের ধরণ উল্লেখ করুন)

ঘটনাচক্রে, এই অন্যান্য মাইক্রোসফ্ট ডকুমেন্টেশন সম্মত হয় যে x86 সাধারণত আরও বহনযোগ্য পছন্দ:

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


2
প্রদত্ত ডিএলএল কেবল 32-বিট হলে কোনওটি কীভাবে নির্ধারণ করতে পারে তা বলতে আপনি সম্ভবত নিজের উত্তরটি সম্পাদনা করতে পারেন। যতদূর আমি জানি, এটি খুঁজে পাওয়া উচিত। আমি মনে করি যে আমরা ডিএলএলগুলির জন্য কেবল x86 এর পরিবর্তে "যে কোনও সিপিইউ" হিসাবেও আশা করছি।
ড্যান ডব্লু

একটি গুরুত্বপূর্ণ পার্থক্য +1 করুন। একটি 32 বিট নির্ভরতা (যা হিসাবে চিহ্নিত করা হয়নি) ব্যবহার করার প্রয়োজন ছিল। ক্রিপ্টিক রানটাইম ত্রুটি বার্তাগুলি বের করতে পারেনি। একটি শিকারী সিপিইউ টার্গেট পরিবর্তন করে এবং এটি কাজ করে তবে "কেন" অনুসন্ধানে যায় searching কোনও দিন চমৎকার হবে যখন সবকিছু 64৪ বিট হয় এবং অসম্পূর্ণতার সমস্যাগুলি 16 বিট বনাম 32 বিটের মতো অতুলনীয় মনে হবে।
জেরাল্ড ডেভিস

2
@ জেরালডাভিস - আমি সম্মত বিড়ম্বনা নেই 32-বিট এবং 64৪-বিট নির্ভরতা (সিএলআর মধ্যে কেবল একটি ক্ষুদ্র স্তরের অভাব) মেশাতে না পারার প্রযুক্তিগত কারণ নেই এবং আমি বিট- দেখেছি তখন নেট থেকে প্রথমদিকে হতাশ হয়ে পড়েছিলাম N স্থাপন করার সময় নেস এখনও বিবেচনা করার মতো কিছু ছিল (এটি বিবেচনা করে একটি ভিএম / জেআইটি হ'ল এটি আরও কিছুটা যুক্ত মান দেওয়ার সুযোগ হত)।
কোডেনহেম

1
@ মির্জোল্টকোলা: মাইক্রোসফ্ট এর চেয়েও খারাপ উপায় হ'ল মাইক্রোসফ্ট যে কারণে সিদ্ধান্ত নিয়েছে তা আমি বুঝতে পারি না যে পর্দার রঙ, ডিফল্ট সেটিংস ইত্যাদির মতো বিষয়গুলি নিয়ন্ত্রণ করলেও রেজিস্ট্রি এন্ট্রিগুলি 32-বিট এবং 64৪-বিট মহাবিশ্বে বিভক্ত করা উচিত I
সুপারক্যাট

এই যে উত্তরটি আমার সন্ধান করা হয়েছিল তা ... ধন্যবাদ!
দামিনো সফটওয়্যার থেকে মুরাত

51

এখানে একটি দ্রুত পর্যালোচনা যা বিভিন্ন বিল্ড লক্ষ্যগুলি ব্যাখ্যা করে।

আমার নিজের অভিজ্ঞতা থেকে, আপনি যদি এমন একটি প্রকল্প তৈরির সন্ধান করছেন যা এক্স x86 এবং x64 উভয় প্ল্যাটফর্মের উপর চলতে পারে এবং আপনার কোনও নির্দিষ্ট x64 অপ্টিমাইজেশন নেই, তবে আমি বিল্ডটি বিশেষত "x86" বলে পরিবর্তন করব।

এর কারণটি হ'ল কখনও কখনও আপনি কয়েকটি ডিএলএল ফাইলগুলি সংঘর্ষে বা এমন কিছু কোড পেতে পারেন যা এক্স 64 পরিবেশে ক্র্যাশ করানো বাহকে সরিয়ে দেয়। X86 নির্দিষ্ট করে উল্লেখ করে, x64 ওএস অ্যাপ্লিকেশনটিকে খাঁটি x86 অ্যাপ্লিকেশন হিসাবে বিবেচনা করবে এবং সবকিছু সুচারুভাবে চলমান তা নিশ্চিত করবে।


37
যা সার্ভার পরিবেশের জন্য আপনার লেখার জন্য ভয়ানক হতে পারে এবং আপনার অ্যাপ্লিকেশনটি 2GB মেমরির বেশি ব্যবহার করতে সক্ষম হতে চায়। আপনি কোনও এক্স 64 জেআইটি অপ্টিমাইজেশানগুলিও বেছে নিচ্ছেন যা কোনও দিন পাইপ থেকে নেমে আসতে পারে।
অস্টিন হ্যারিস

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

2
"X86 নির্দিষ্ট করে নির্দিষ্ট করে দিয়ে, x64 ওএস অ্যাপটিকে খাঁটি এক্স 8686 অ্যাপ হিসাবে বিবেচনা করবে এবং সবকিছু সুচারুভাবে চালিত হয়েছে তা নিশ্চিত করবে।" - দুঃখিত, আমি একমত নই x64 ওএস আপনার ডাব্লুডব্লিউ 64 এর মধ্যে আপনার x86 অ্যাপটি চালাবে
মানদীপ জানজুয়া

এটি কারও কাছে কেবল খারাপ পরামর্শ যা তার প্রভাবটি পুরোপুরি বুঝতে পারে না। @ অস্টিনহরিস একটি দুর্দান্ত উদাহরণ দেয়। কেবলমাত্র কয়েক গিগাবাইট র‌্যামের মধ্যে সীমাবদ্ধ ওয়েব কর্মী প্রক্রিয়াটি কল্পনা করুন (আমাকে সম্প্রতি এটির সাথে উত্পাদন করতে হয়েছিল) deal
rgoliveira

47

নিবন্ধটি ভিজ্যুয়াল স্টুডিও দেখুন। নেট প্ল্যাটফর্ম টার্গেট ব্যাখ্যা

ডিফল্ট সেটিংস, "যে কোনও সিপিইউ" এর অর্থ হ'ল সমাবেশটি মূলত চলমান সিপিইউতে চলবে। অর্থ, এটি একটি 64-বিট মেশিনে 64-বিট এবং 32-বিট মেশিনে 32-বিট হিসাবে চলবে। যদি 64৪-বিট অ্যাপ্লিকেশন থেকে অ্যাসেম্বলিটি আহ্বান করা হয় তবে এটি একটি 64৪-বিট বিধানসভা হিসাবে সম্পাদন করবে।

উপরের লিঙ্কটি নষ্ট হয়ে গেছে বলে জানা গেছে, সুতরাং এখানে একই ধরণের ব্যাখ্যা সহ একটি আর্টিকেল দেওয়া হয়েছে: নেটওয়ালিটি 4.5 এবং ভিজ্যুয়াল স্টুডিও 11 এর মতে কোনটিসিপিইউ আসলেই বোঝায়


1
লিঙ্কটি ভাঙ্গা now এখন পার্ক করা ডোমেনে চলছে।
জন অ্যাডামস

আমি একই তথ্যের সাথে একটি দ্বিতীয় নিবন্ধে একটি লিঙ্ক যুক্ত করেছি। ডোমেনটি পুনরায় সক্রিয় হওয়ার ক্ষেত্রে আমি প্রথম লিঙ্কটি রেখেছি।
ডিসিএনইএএম


39

"যে কোনও সিপিইউ" এর অর্থ হ'ল প্রোগ্রামটি শুরু হয়ে গেলে .NET ফ্রেমওয়ার্কটি আপনার প্রোগ্রামটি 32 বিট বা 64 বিটগুলিতে চালিত করতে পারে কিনা, ওএস বেনিফিটের উপর ভিত্তি করে বের করে আনে।

X86 এবং যে কোনও সিপিইউয়ের মধ্যে পার্থক্য রয়েছে : একটি x64 সিস্টেমে আপনার এক্স 86 এর জন্য সংকলিত নির্বাহযোগ্য 32-বিট এক্সিকিউটেবল হিসাবে চলবে।

আপনার সন্দেহ যতদূর যায়, কেবল ভিজ্যুয়াল স্টুডিও 2008 কমান্ড লাইনে যান এবং নিম্নলিখিতগুলি চালান।

dumpbin YourProgram.exe /headers

এটি আপনাকে আপনার প্রোগ্রামের সুস্থতা এবং আরও অনেক কিছু বলবে।


7
যদি এটি "কোনও সিপিইউ" তে নির্মিত হয় তবে এটি ডাম্পবিন শিরোনামে 32 বিট হিসাবে প্রদর্শিত হবে।
কিরবিনেটর

34

যে কোনও সিপিইউ মানে এটি যে কোনও প্ল্যাটফর্মে কাজ করবে। এটি কারণ ম্যানেজড কোড জাভা এর অনুরূপ। এটিকে বাইট কোডে সংকলিত বলে মনে করুন যা রানটাইম সময় .NET ফ্রেমওয়ার্ক দ্বারা ব্যাখ্যা করা হয়।

সি ++ এর বিকল্প নেই কারণ এটি মেশিন কোডে সংকলিত যা প্ল্যাটফর্ম নির্দিষ্ট।


12
অন্য কেউ করেনি এমন প্রশ্নের এক অংশের উত্তর দেওয়ার জন্য +1 (সিসি ++ প্রকল্পগুলির বিকল্প হিসাবে কোনও এসিপিইউ নেই)।
cplotts

সি ++ / সিএলআই কোনও মেশিন কোড (/ সিআরআর: খাঁটি) ছাড়াই আইএল কোডে সংকলন করা যায়। তবে আকারের (অকার্যকর *) এখনও সি ++ এ একটি সংকলন-সময় ধ্রুবক হওয়া দরকার; সুতরাং কোনও মেশিন কোড জড়িত থাকার পরেও আপনি এখনও একটি বাইনারি তৈরি করতে পারবেন না যা একই সময়ে 32-বিট এবং 64-বিটের কাজ করবে।
ড্যানিয়েল

5

আমি এই পোস্টটি পড়ার পরামর্শ দিচ্ছি ।

AnyCPU ব্যবহার করার সময় , শব্দার্থবিজ্ঞানগুলি নিম্নলিখিত:

  • যদি প্রক্রিয়াটি 32-বিট উইন্ডোজ সিস্টেমে চলে তবে এটি 32-বিট প্রক্রিয়া হিসাবে চলে। সিআইএল x86 মেশিন কোডে সংকলিত।
  • যদি প্রক্রিয়াটি একটি 64-বিট উইন্ডোজ সিস্টেমে চলে তবে এটি 32-বিট প্রক্রিয়া হিসাবে চলে। সিআইএল x86 মেশিন কোডে সংকলিত।
  • যদি প্রক্রিয়াটি একটি এআরএম উইন্ডোজ সিস্টেমে চলে তবে এটি 32-বিট প্রক্রিয়া হিসাবে চলে। সিআইএল এআরএম মেশিন কোডে সংকলিত।

8
কেবলমাত্র "32-বিট পছন্দ করুন" নির্বাচন করা হলে।
ফ্লোরিয়ান শীতকাল

ভিজ্যুয়াল স্টুডিও 11
ময়ারওয়াল্ড

@ মোয়ারওয়াল্ড আমি বিশ্বাস করি যে এটি একটি বাগ ছিল যা ঠিক করা হয়েছে। আপনি যদি ম্যামকজ পোস্টটি পড়েন তবে লেখক লিখেছেন "বর্তমান ভিজ্যুয়াল স্টুডিও ইউআইতে" 32-বিট পছন্দ করুন "ধূসর এবং চেক করা হয়নি, যেখানে বাস্তবে এটি সক্ষম করা আছে" "; আমার ভিএস এর সংস্করণে (15.8.0) বিকল্পটি এখনও গ্রেভড এবং চেক করা নেই, তবে এটি প্রত্যাশিত হিসাবে কাজ করে (সংকলিত সমাবেশের CorFlags বিভাগে পতাকা 32BITPREF = FALSE)
রায়কোল আমারো

-1

ভিজুয়াল স্টুডিও 2017 এ আমি এটি করেছিলাম:

  • সমাধান এক্সপ্লোরার ইন
  • আপনার প্রকল্পে ডান ক্লিক করুন
  • "সম্পত্তি" ক্লিক করুন
  • "বিল্ড" ক্লিক করুন
  • "32-বিট পছন্দ করুন" বিকল্পটি বন্ধ করুন
  • এবং আপনি প্ল্যাটফর্ম লক্ষ্য থেকে "x64" চয়ন করতে পারেন।

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