আমি কীভাবে একটি 64-বিট মেশিনে 32-বিট মোডে একটি এক্সিকি চালাতে পারি?


18

আমার কাছে একটি এক্সিকিউটেবল রয়েছে যা 32-বিট উইন্ডোতে চালিত হয়ে ঠিকঠাক কাজ করে তবে 64৪-বিট উইন্ডোতে চলাকালীন ব্রেক হয়।

64-বিট মেশিনে 32-বিট মোডে চালাতে বাধ্য করার কোনও উপায় আছে কি?

সোর্স কোডটিতে আমার অ্যাক্সেস নেই।


এটি খুব একটা বোঝায় না। সফ্টওয়্যারটির এমন কিছু কোড না থাকলে যা bit৪ বিট মেশিনে না চালালে স্পষ্টতই এটি ব্যর্থ হয়। Bit৪ বিটটিতে 32 বিট জরিমানা হয়, সমস্যাটি অন্যভাবে আসে (32 বিটের উপর 64 বিট চলমান)। আপনি কি একটি ত্রুটি বার্তা পান?
ডেভ

3
এই কোডটি কি আপনি লিখেছেন (যে ক্ষেত্রে স্ট্যাক ওভারফ্লো জিজ্ঞাসা করার জায়গা - কোড এবং ত্রুটি বার্তাগুলি সহ), বা এটি আপনি চালাচ্ছেন এমন অন্য কারও প্রোগ্রাম? আপনি পাচ্ছেন এমন কোনও ত্রুটি বার্তা অন্তর্ভুক্ত করলে এটি সহায়তা করবে help
ক্রিসএফ

উত্তর:


16

আপনি কতটা প্রযুক্তিগত উত্তর চান? আপনি সম্ভবত কয়েকটি এসডিকে সরঞ্জামের সাহায্যে এপিএকে সর্বদা 32 বিট চালাতে বাধ্য করতে পারেন, তবে এটির জন্য একটু কাজ দরকার।

সহজ উত্তর হ'ল 32 বিট প্রক্রিয়া থেকে লঞ্চ করা (উদাহরণস্বরূপ %SystemRoot%\SYSWOW64\cmd.exeলঞ্চের ব্যবহার )।

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

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

.NET এর জন্য আপনি এসডিকে সরঞ্জামগুলি এতে ব্যবহার করতে পারেন:

  • অ্যাপ্লিকেশনটি "যে কোনও এসপিইউ": যাচাই করুন corflags myExe.exe। .NET সমাবেশের শিরোনামগুলি পড়ার জন্য .NET SDK- এর একটি ইউটিলিটি ব্যবহার করে, কোনও এক্সাইকের জন্য এমন কিছু ফিরে আসবে:
সংস্করণ: v4.0.30319
সিএলআর শিরোনাম: 2.5
পিই: পিই 32
CorFlags: 0x20003
নিঃসঙ্গ: 1
32BITREQ: 0
32 বিটপ্রিফ: 1
স্বাক্ষরিত: 0

32BITREQআমাকে বলে এই হল AnyCPUকারণ 32bit প্রয়োজন হয় না।

  • শুধুমাত্র 32 বিট হতে এক্সিকে পরিবর্তন করতে corflagsতার /32BITREQ+বিকল্পটি ব্যবহার করুন ।

+1। নেট আনসিপিইউ সেটিংটি আমার প্রথম চিন্তা ছিল। এই সেটিংসটি যথাযথভাবে নির্দিষ্ট না করার জন্য এটি অজানা প্রোগ্রামার যা লাগে। এটি সঙ্কলনের পরে এটি ঠিক করার উপায় আছে শুনে শুনে খুব ভাল।
হ্যান্ড-ই-ফুড

2
আমি এটিকে প্রবর্তন করার চেষ্টা করেছি %SystemRoot%\SYSWOW64\cmd.exeএবং এটি একইভাবে ব্যর্থ হয়েছিল - একটি ত্রুটি বার্তা প্রদর্শন করছে - এবং আমি যখন টাস্কম্যানেজারে চেক করি তখন আমার এক্সপি প্রক্রিয়া 32-বিট প্রক্রিয়া হিসাবে প্রদর্শিত হয় না
ররি

1
ডেভ উপরে যেমন জিজ্ঞাসা করেছিলেন, আপনি কোন সঠিক ত্রুটি বার্তা পেয়েছেন?
করণ

5
SYSWOW64\cmd.exeএখনও থেকে পরিচালিত কোনও এসিপিইউ এক্সই চালু করা এটিকে 64৪ -বিট প্রক্রিয়া হিসাবে চালিত করে (আমি এটি চেষ্টা করেছিলাম)।
কার্ল ওয়ালশ

3

আপনার যদি উইন্ডোজ 7 পেশাদার (বা উচ্চতর) থাকে তবে মাইক্রোসফ্ট থেকে ভার্চুয়াল এক্সপি মোডটি ব্যবহার করুন

এটি 32 বিট পরিবেশ অনুকরণ করে (?), এবং এটি কিছু পুরানো 16 বিট প্রোগ্রাম চালানোর জন্য কার্যকর প্রমাণিত হয়েছে


0

সবকিছু চেষ্টা করেও কিছু কাজ হয়নি। তবে তারপরে জিটিএ আইভ ডিরেক্টরিটি সি / প্রোগ্রাম ফাইলগুলি (x86) থেকে সি / প্রোগ্রাম ফাইলগুলিতে সরিয়ে নিয়ে যাওয়ার কথা ভেবেছিল এবং এটি কাজ করে যেহেতু x86 32 বিট অ্যাপসের জন্য (আমার মনে হয়) তবে যেভাবে কাজ করেছে worked


0

এটি সমন্বিত করার জন্য একটি সহজ উপায় আসলে (দীর্ঘমেয়াদী সমাধান নয়)।

"Corflags.exe" অ্যাপ্লিকেশনটি \ উইন্ডোজ \ সিস্টেম 32 ফোল্ডারে ফেলে দিন। প্রশাসক হিসাবে একটি কমান্ড লাইন খুলুন এবং টাইপ করুন ...

Corflags "উদাহরণের পথ এবং নাম" / 32BITPREF32 +

এটি অ্যাপ্লিকেশনটিকে 64-বিটের পরিবর্তে 32-বিট প্রক্রিয়া হিসাবে চালিত করতে বাধ্য করবে।

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