رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران
  • 0
nabegheh95

قابلیت اجرای برنامه کامپایل شده در سیستم عامل‌های مختلف


سوال

سلام

من سالهاست تجربه کار با ویژوال استودیوC++  رو دارم ولی به تازگی میخوام شروع کنم Qt را یا بگیرم.

یه سوال داشتم. اگر add ons مربوط به qt در ویژوال استودیو را نصب کنم و با کتابخانه های qt کار کنم. آیا برنامه کامپایل شده نهایی (دسکتاپی) در هر سیستم عاملی قابل اجراست؟ مثلا در سیستم عامل لینوکس یا اندروید (موبایل) ؟

یا اینکه باید پروژه را به این سیستم عاملها منقل کنم و مجددا تحت این سیستم عاملها کامپایل کنم؟

چطور میتونم با کمترین کار و دردسر، برنامه ای نهایتا داشته باشم که در همه سیستم عاملها قابل اجرا باشد؟

قبلا از توضیحتون متشکرم

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

4 پاسخ به این سوال تا کنون داده شده است

پست های پیشنهاد شده

  • 1
در 2 ساعت قبل، nabegheh95 گفته است :

سلام

من سالهاست تجربه کار با ویژوال استودیوC++  رو دارم ولی به تازگی میخوام شروع کنم Qt را یا بگیرم.

یه سوال داشتم. اگر add ons مربوط به qt در ویژوال استودیو را نصب کنم و با کتابخانه های qt کار کنم. آیا برنامه کامپایل شده نهایی (دسکتاپی) در هر سیستم عاملی قابل اجراست؟ مثلا در سیستم عامل لینوکس یا اندروید (موبایل) ؟

سلام،
افزونهٔ Qt در Visual Studio تنها امکان توسعهٔ برنامه‌های تحت کیوت رو در محیط ویژوال استودیو می‌دهد (بنابراین هماهنگی کامل با فناوری‌های اختصاصی کیوت را نخواهد داشت). در صورتی که شما کامپایلر و تنظیمات qmake یا cmake را برای پلتفرم‌های مورد نظر به درستی تنظیم کنید می‌تونید خروجی مناسب را تهیه کنید.

دقت کنید که برای iOS و Linux شما باید روی پلتفرم‌های مک و لینوکس خروجی بگیرید.

در 2 ساعت قبل، nabegheh95 گفته است :

یا اینکه باید پروژه را به این سیستم عاملها منقل کنم و مجددا تحت این سیستم عاملها کامپایل کنم؟

چطور میتونم با کمترین کار و دردسر، برنامه ای نهایتا داشته باشم که در همه سیستم عاملها قابل اجرا باشد؟

قبلا از توضیحتون متشکرم

برای iOS و macOS بهترین روش همین هست که شما در پلتفرم مربوط به خودشون کامپایل کنید. حتی برای لینوکس هم بهتره از همین روش استفاده کنید (هرچند به کمک روش کراس کامپایل می‌تونید خروجی بگیرید).

در 2 ساعت قبل، nabegheh95 گفته است :

چطور میتونم با کمترین کار و دردسر، برنامه ای نهایتا داشته باشم که در همه سیستم عاملها قابل اجرا باشد؟

سعی کنید از استاندارد‌ها و رابط‌های خاص ویندوز استفاده نکنید، سعی کنید استاندارد‌های هر پلتفرم رو برای خودش اعمال و تحت چهارچوب و قوانین کیوت طراحی و توسعه انجام بدین. در این صورت بدون دردسر‌های متداول می‌تونید برنامهٔ خودتون رو برای پلتفرم مقصد خروجی و اجرا کنید.

این بخش هم مقالات و آموزش‌های مناسبی موجود هستند که پیشنهاد می‌کنم بررسی بفرمایید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 55 دقیقه قبل، کامبیز اسدزاده گفته است :

سلام،
افزونهٔ Qt در Visual Studio تنها امکان توسعهٔ برنامه‌های تحت کیوت رو در محیط ویژوال استودیو می‌دهد (بنابراین هماهنگی کامل با فناوری‌های اختصاصی کیوت را نخواهد داشت). در صورتی که شما کامپایلر و تنظیمات qmake یا cmake را برای پلتفرم‌های مورد نظر به درستی تنظیم کنید می‌تونید خروجی مناسب را تهیه کنید.

دقت کنید که برای iOS و Linux شما باید روی پلتفرم‌های مک و لینوکس خروجی بگیرید.

برای iOS و macOS بهترین روش همین هست که شما در پلتفرم مربوط به خودشون کامپایل کنید. حتی برای لینوکس هم همینطور هست.

سعی کنید از استاندارد‌ها و رابط‌های خاص ویندوز استفاده نکنید، سعی کنید استاندارد‌های هر پلتفرم رو برای خودش اعمال و تحت چهارچوب و قوانین کیوت طراحی و توسعه انجام بدین. در این صورت بدون دردسر‌های متداول می‌تونید برنامهٔ خودتون رو برای پلتفرم مقصد خروجی و اجرا کنید.

این بخش هم مقالات و آموزش‌های مناسبی موجود هستند که پیشنهاد می‌کنم بررسی بفرمایید.

ممنون از جواب کاملتون.

چون خیلی تازه شروع کردم به یادگیری Qt، بعضی جاها مبهم هست برام .

ولی به طور کلی فهمیدم که برای اجرایی شدن برنامه نهایی در هر سیستم عامل، باید پروژه را در همان سیستم عامل کامپایل کنم ، تا اگر تضادی با آن سیستم عامل داشت، همانجا خطا بدهد (احتمالا)

و همیشه سعی براین داشته باشم که فقط و فقط از توابع و apiهای خود Qt استفاده کنم

با تشکر فراوان

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0

@nabegheh95 درود بر شما؛

در در 9 مرداد 1398 در 14:06، nabegheh95 گفته است :

من سالهاست تجربه کار با ویژوال استودیوC++  رو دارم ولی به تازگی میخوام شروع کنم Qt را یا بگیرم.

لازم به ذکر بود که، برنامهٔ Microsoft Visual Studio یک IDE توسعه داده شده توسط شرکت Microsoft می‌باشد. و برای توسعهٔ هرچه بهتر برنامه‌های سیستم‌عامل Windows تحت Microsoft .Net می‌باشد. درواقع شما با کامپایلر Microsoft Visual C++.Net کارکردید.

برای فریمورک Qt هم یک IDE بسیارعالی وجود دارد که سرعت توسعهٔ نرم‌افزار با استفاده از این فریمورک را افزایش می‌دهد، پس پیشنهاد می‌کنم به جای استفاده از آن افزونه مستقیم از این IDE استفاده کنید چرا که یک IDE بسیار خوب نیز برای ++C\C می‌باشد.

تنها پیشنهاد می‌شود که در سیستم‌عامل Microsoft Windows از کامپایلر Microsoft Visual C++.Net استفاده کنید، این کامپایلر برای سیستم‌عامل خود به خوبی عمل می‌کند. هرچند که باید حواستان به تنبلی‌های مایکروسافت باشد مواردی مثل مورد زیر اصلاً پیاده‌سازی نشده‌اند:

void char_exception() throw(int){
    throw 'x';
}

int main(void){
    try{
        char_exception();
    }
    catch (...){
        std::cout << "Caught it." << std::endl;
    }
    return 0;
}

توضیح.

در در 9 مرداد 1398 در 15:43، nabegheh95 گفته است :

چون خیلی تازه شروع کردم به یادگیری Qt، بعضی جاها مبهم هست برام .

فریمورک Qt یک مجموعهٔ عظیم از کتابخانه‌ها می‌باشد، که تماماً نیز در این‌سایت مستند شده‌اند. برای رفع ابهامات کافی است که مستندات را به دقّت مطالعه و نمونه‌های نوشته شده را بررسی و امتحان کنید.

در در 9 مرداد 1398 در 15:43، nabegheh95 گفته است :

ولی به طور کلی فهمیدم که برای اجرایی شدن برنامه نهایی در هر سیستم عامل

اجرا شدن یک فایل، بسته به کرنل یک سیستم‌عامل و نحوهٔ پیاده‌سازی آن می‌باشد. پس مسلماً ساختاری که در کرنل Windows NT به عنوان فایل اجرایی شناخته شده است، در کرنل Linux قابل قبول نیست.  برای اطلاعات بیشتر درمورد این ساختارها می‌توانید ساختار PE و ELF را بررسی کنید.

 

در در 9 مرداد 1398 در 15:43، nabegheh95 گفته است :

و همیشه سعی براین داشته باشم که فقط و فقط از توابع و apiهای خود Qt استفاده کنم

در حالت ایده‌آل، بلی باید تلاش داشته‌باشید که از APIهایی که Qt فراهم می‌کند استفاده کنید، امّا همیشه این کار شدنی نیست. شما همیشه نیازی به استفاده از Qt‌ ندارید و ممکن است قابلیّتی در یک سیستم‌عامل نیاز داشته‌باشید که مشابه آن در یک سیستم‌عامل دیگر متفاوت هست. برای مثال :

image.png.a819715d17876c21c1821d14772098ae.png

این سورس Telegram/ThirdParty/minizip/ioapi.c هست، ببینید به چه صورت در خط‌های ۱۳ و ۱۷ و ۲۲ بسته به سیستم‌عامل مقصد مشخص کرده‌است که چه توابعی باید کامپایل شوند. با این روش شما درحالی که از قابلیّت خاص یک سیستم‌عامل استفاده کردید ولی برنامهٔ شما Cross-Platform می‌باشد.

پیشنهاد می‌کنم کتاب «++API Design For C» نوشتهٔ آقای «Martin Reddy» را مطالعه کنید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو ملحق شوید

شما همین الآن می‌توانید مطلبی را ارسال و بعداً ثبت‌نام کنید. اگر حساب کاربری دارید، و با حساب کاربری خود مطلب ارسال کنید.
نکته: مطلب شما قبل از انتشار نیاز به بازبینی توسط میانجی‌گر‌ها دارد.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...