انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: مشکل در کامپایل  (دفعات بازدید: 3363 بار)

0 کاربر و 3 مهمان درحال مشاهده موضوع.

آفلاین DebianGod

  • Sr. Member
  • *
  • ارسال: 461
  • جنسیت : پسر
  • Ruby
مشکل در کامپایل
« : 12 مهر 1392، 07:21 ب‌ظ »
سلام من برنامه نویسی سی پلاس میکنم سورس هایی که از گیت هاب دانلود میکردم قبلا تو مک کامپایل میشد ولی حالا تو لینوکس نیاز به یه سری include داره که اصلا تو لینوکس نیست فقط تو ویندوز هست با مک باید چیکارد کنم؟
بدلیل متنفر بودن از ابونتو دیگه این فروم نمیام

آفلاین احسان☺ -

  • Hero Member
  • *
  • ارسال: 937
  • جنسیت : پسر
  • !no power geek
پاسخ : مشکل در کامپایل
« پاسخ #1 : 12 مهر 1392، 07:44 ب‌ظ »
سلام
علیک السلام
من برنامه نویسی سی پلاس میکنم سورس هایی که از گیت هاب دانلود میکردم قبلا تو مک کامپایل میشد
یعنی الان دیگه کامپایل نمیشه؟  :D

حالا تو لینوکس نیاز به یه سری include داره که اصلا تو لینوکس نیست فقط تو ویندوز هست با مک باید چیکارد کنم؟
سوال واضح نیست منظورت کتابخانه هست؟ اون سورس فایل readme چیزی نداره؟اگه داره اینجا بزار.اسم اون include ها چیه؟
اصلا تو لینوکس نیست فقط تو ویندوز هست با مک باید چیکارد کنم؟
اصن این جمله کشته منو
 ;D ;D ;D
 ](*,) ](*,)
 :'( :'(
 ;D ;D
« آخرین ویرایش: 12 مهر 1392، 07:55 ب‌ظ توسط احسان☺ »

آفلاین DebianGod

  • Sr. Member
  • *
  • ارسال: 461
  • جنسیت : پسر
  • Ruby
پاسخ : مشکل در کامپایل
« پاسخ #2 : 12 مهر 1392، 08:11 ب‌ظ »
#include <iostream>
#include <windows.h>

int main()
{
const WORD colors[] =
{
0x1A, 0x2B, 0x3C, 0x4D, 0x5E, 0x6F,
0xA1, 0xB2, 0xC3, 0xD4, 0xE5, 0xF6
};

HANDLE hstdin  = GetStdHandle( STD_INPUT_HANDLE  );
HANDLE hstdout = GetStdHandle( STD_OUTPUT_HANDLE );
WORD   index   = 0;

// Remember how things were when we started
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo( hstdout, &csbi );

// Tell the user how to stop
SetConsoleTextAttribute( hstdout, 0xEC );
std::cout << "Press any key to quit.\n";

// Draw pretty colors until the user presses any key
while (WaitForSingleObject( hstdin, 100 ) == WAIT_TIMEOUT)
{
SetConsoleTextAttribute( hstdout, colors[ index ] );
std::cout << "\t\t\t\t Hello World \t\t\t\t" << std::endl;
if (++index > sizeof(colors)/sizeof(colors[0]))
index = 0;
}
FlushConsoleInputBuffer( hstdin );

// Keep users happy
SetConsoleTextAttribute( hstdout, csbi.wAttributes );
return 0;
}

سورس بالایی از کتابخونه ی windows.h استفاده میکنه برای رنگی کردن کنسول ولی سورس پایینی توی iostream هست ولی بازم تو لینوکس کامپایل نمیشه
#include <iostream>

int main()
{
while(true)
{
system("Color 1A");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color 2B");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color 3C");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color 4D");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color 5E");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color 6F");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color A1");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color B2");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color C3");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color D4");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color E5");
std::cout << "\t\t\t    Hello World" << std::endl;
system("Color F6");
std::cout << "\t\t\t    Hello World" << std::endl;
}
return 0;
}
بدلیل متنفر بودن از ابونتو دیگه این فروم نمیام

آفلاین DebianGod

  • Sr. Member
  • *
  • ارسال: 461
  • جنسیت : پسر
  • Ruby
پاسخ : مشکل در کامپایل
« پاسخ #3 : 12 مهر 1392، 08:12 ب‌ظ »
#include <stdlib.h>

system( "color 5B" );

اینم نیست
بدلیل متنفر بودن از ابونتو دیگه این فروم نمیام

آفلاین احسان☺ -

  • Hero Member
  • *
  • ارسال: 937
  • جنسیت : پسر
  • !no power geek
پاسخ : مشکل در کامپایل
« پاسخ #4 : 12 مهر 1392، 08:50 ب‌ظ »
تا اون جا که من فهمیدم(همین الان از سرچ سرسری)نمیشه از windows.h تو لینوکس استفاده کرد.
ببین لینک زیر میتونه کمکی بکنه؟
http://stackoverflow.com/questions/9336282/porting-win32-code-windows-h-to-linux
با این حال صبر کن که بزرگان هم نظر بدن

آفلاین DebianGod

  • Sr. Member
  • *
  • ارسال: 461
  • جنسیت : پسر
  • Ruby
پاسخ : مشکل در کامپایل
« پاسخ #5 : 12 مهر 1392، 09:00 ب‌ظ »
تا اون جا که من فهمیدم(همین الان از سرچ سرسری)نمیشه از windows.h تو لینوکس استفاده کرد.
ببین لینک زیر میتونه کمکی بکنه؟
http://stackoverflow.com/questions/9336282/porting-win32-code-windows-h-to-linux
با این حال صبر کن که بزرگان هم نظر بدن

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

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4867
  • جنسیت : پسر
  • masoft قدیم
پاسخ : مشکل در کامپایل
« پاسخ #6 : 12 مهر 1392، 09:02 ب‌ظ »
سلام من برنامه نویسی سی پلاس میکنم سورس هایی که از گیت هاب دانلود میکردم قبلا تو مک کامپایل میشد ولی حالا تو لینوکس نیاز به یه سری include داره که اصلا تو لینوکس نیست فقط تو ویندوز هست با مک باید چیکارد کنم؟
من سوال رو اینطور متوجه شدم:
یک برنامه داری که یک سری include داره که توی لینوکس نیست و فقط تو ویندوز هست، ولی با این وجود توی مک کامپایل می‌شده. حالا با کامپیوتر مک چه کارایی می‌شه کرد؟

جوابش هم اینه اگر دوست‌ داری به ++C برنامه‌نویسی بکنی، بصورت کلاسیک شروع به یادگیری ++C از ابتدا بکن. اینطوری هم می‌تونی سوالت رو به درستی بپرسی، هم اینکه در دراز مدت وقتت کمتر تلف می‌شه.

آفلاین DebianGod

  • Sr. Member
  • *
  • ارسال: 461
  • جنسیت : پسر
  • Ruby
پاسخ : مشکل در کامپایل
« پاسخ #7 : 12 مهر 1392، 09:17 ب‌ظ »
سلام من برنامه نویسی سی پلاس میکنم سورس هایی که از گیت هاب دانلود میکردم قبلا تو مک کامپایل میشد ولی حالا تو لینوکس نیاز به یه سری include داره که اصلا تو لینوکس نیست فقط تو ویندوز هست با مک باید چیکارد کنم؟
من سوال رو اینطور متوجه شدم:
یک برنامه داری که یک سری include داره که توی لینوکس نیست و فقط تو ویندوز هست، ولی با این وجود توی مک کامپایل می‌شده. حالا با کامپیوتر مک چه کارایی می‌شه کرد؟

جوابش هم اینه اگر دوست‌ داری به ++C برنامه‌نویسی بکنی، بصورت کلاسیک شروع به یادگیری ++C از ابتدا بکن. اینطوری هم می‌تونی سوالت رو به درستی بپرسی، هم اینکه در دراز مدت وقتت کمتر تلف می‌شه.

نه . ببین من توی مک و لینوکس با یه کد رنگ متن رو توی cout تغییر میدادم ولی توی نت که گشتم زده برای gcc باید windows.h رو اینگلود بکنی
ولی من این رو ندارم وسلام وقتی هم میارم خود windows.h هزارتا اینکلود دیگه تو خودش داره که اونارو هم ندارم باید از کجا بیارم با این تفاسیر توی مک نیازی به اینکار نبود یه راست میزدی cout  و رنگت رو میزدی
من فکر میکنم لایبرری iostream لینوکس و ویندوز از مک ناقص تره
بدلیل متنفر بودن از ابونتو دیگه این فروم نمیام

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4867
  • جنسیت : پسر
  • masoft قدیم
پاسخ : مشکل در کامپایل
« پاسخ #8 : 12 مهر 1392، 09:24 ب‌ظ »
برای تغییر رنگ و کارهای مشابه باید از کتابخانه ncurses استفاده کنی.

آفلاین majidkamali1370

  • Hero Member
  • *
  • ارسال: 928
  • جنسیت : پسر
پاسخ : مشکل در کامپایل
« پاسخ #9 : 13 مهر 1392، 08:38 ق‌ظ »
سلام.
برنامه هایی که میخوان کراس کامپایل کنن معمولا اینجوری نوشته میشن:
#include <iostream>

#ifdef _WIN32
#include <windows.h>
#endif

int main()
{
#ifdef _WIN32
system("color 5B");
#endif

#ifdef __linux__
// linux terminal colorizing here
#endif

cout << "Hello World!";
return 0;
}

در ضمن تابع system استاندارد ++C نیست. مثل هدر فایل conio.h که اون هم استاندارد ++C نیست. اینکه مثلا ++C ویندوز یه چیزایی بیشتر داره دلیل بر ناقص بودن ++g نیست. چیزای غیر استاندارد واردش شده.

حالا چاره چیه؟
اون برنامه بالا رو نگاه کن. اون قسمت کامنت رو برو با استفاده از لینک زیر پر کن
http://linuxgazette.net/issue65/padala.html

حالا میتونی این برنامه رو بدون تغییر کد در ویندوز و لینوکس کامپایل کنی.
Ubuntu 14.04 LTS 64-bit - unity

آفلاین DebianGod

  • Sr. Member
  • *
  • ارسال: 461
  • جنسیت : پسر
  • Ruby
پاسخ : مشکل در کامپایل
« پاسخ #10 : 13 مهر 1392، 04:32 ب‌ظ »
سلام.
برنامه هایی که میخوان کراس کامپایل کنن معمولا اینجوری نوشته میشن:
#include <iostream>

#ifdef _WIN32
#include <windows.h>
#endif

int main()
{
#ifdef _WIN32
system("color 5B");
#endif

#ifdef __linux__
// linux terminal colorizing here
#endif

cout << "Hello World!";
return 0;
}

در ضمن تابع system استاندارد ++C نیست. مثل هدر فایل conio.h که اون هم استاندارد ++C نیست. اینکه مثلا ++C ویندوز یه چیزایی بیشتر داره دلیل بر ناقص بودن ++g نیست. چیزای غیر استاندارد واردش شده.

حالا چاره چیه؟
اون برنامه بالا رو نگاه کن. اون قسمت کامنت رو برو با استفاده از لینک زیر پر کن
http://linuxgazette.net/issue65/padala.html

حالا میتونی این برنامه رو بدون تغییر کد در ویندوز و لینوکس کامپایل کنی.

ببین حاجی من کلا اینکلود windows.h رو ندارم
بدلیل متنفر بودن از ابونتو دیگه این فروم نمیام

آفلاین امیرحسین گودرزی

  • ناظر انجمن
  • *
  • ارسال: 743
  • جنسیت : پسر
  • Devops engineer and AI enthusiastic
پاسخ : مشکل در کامپایل
« پاسخ #11 : 13 مهر 1392، 05:06 ب‌ظ »
سلام.
برنامه هایی که میخوان کراس کامپایل کنن معمولا اینجوری نوشته میشن:
#include <iostream>

#ifdef _WIN32
#include <windows.h>
#endif

int main()
{
#ifdef _WIN32
   system("color 5B");
#endif

#ifdef __linux__
   // linux terminal colorizing here
#endif

   cout << "Hello World!";
   return 0;
}

در ضمن تابع system استاندارد ++C نیست. مثل هدر فایل conio.h که اون هم استاندارد ++C نیست. اینکه مثلا ++C ویندوز یه چیزایی بیشتر داره دلیل بر ناقص بودن ++g نیست. چیزای غیر استاندارد واردش شده.

حالا چاره چیه؟
اون برنامه بالا رو نگاه کن. اون قسمت کامنت رو برو با استفاده از لینک زیر پر کن
http://linuxgazette.net/issue65/padala.html

حالا میتونی این برنامه رو بدون تغییر کد در ویندوز و لینوکس کامپایل کنی.

ببین حاجی من کلا اینکلود windows.h رو ندارم
خب بگرد و دانلودش کن و توی include ات آدرسشو بده
باید بلد باشی دیگه چطوری یه فایل هدر خارجی رو انکلود کنی یا بگم؟


آفلاین DebianGod

  • Sr. Member
  • *
  • ارسال: 461
  • جنسیت : پسر
  • Ruby
پاسخ : مشکل در کامپایل
« پاسخ #12 : 13 مهر 1392، 06:38 ب‌ظ »
سلام.
برنامه هایی که میخوان کراس کامپایل کنن معمولا اینجوری نوشته میشن:
#include <iostream>

#ifdef _WIN32
#include <windows.h>
#endif

int main()
{
#ifdef _WIN32
   system("color 5B");
#endif

#ifdef __linux__
   // linux terminal colorizing here
#endif

   cout << "Hello World!";
   return 0;
}

در ضمن تابع system استاندارد ++C نیست. مثل هدر فایل conio.h که اون هم استاندارد ++C نیست. اینکه مثلا ++C ویندوز یه چیزایی بیشتر داره دلیل بر ناقص بودن ++g نیست. چیزای غیر استاندارد واردش شده.

حالا چاره چیه؟
اون برنامه بالا رو نگاه کن. اون قسمت کامنت رو برو با استفاده از لینک زیر پر کن
http://linuxgazette.net/issue65/padala.html

حالا میتونی این برنامه رو بدون تغییر کد در ویندوز و لینوکس کامپایل کنی.

ببین حاجی من کلا اینکلود windows.h رو ندارم
خب بگرد و دانلودش کن و توی include ات آدرسشو بده
باید بلد باشی دیگه چطوری یه فایل هدر خارجی رو انکلود کنی یا بگم؟

مگه اینکلود خارجی اینطوری نیست #include "windows.h"
خب شما یه پروژه hello world بساز که ۴ تا توش باشه هرکدوم یه رنگ دستت درد نکنه
بدلیل متنفر بودن از ابونتو دیگه این فروم نمیام

آفلاین majidkamali1370

  • Hero Member
  • *
  • ارسال: 928
  • جنسیت : پسر
پاسخ : مشکل در کامپایل
« پاسخ #13 : 14 مهر 1392، 06:49 ب‌ظ »
توی اون لینکی که دادم مثالش هست.
در ضمن اون برنامه که نوشتم، اولش چک میکنه که WIN32_ تعریف شده یا نه. اگه تعریف شده باشه میاد و هدر windows رو include میکنه. این فقط توی ویندوز تعریف شده و توی لینوکس تعریف نشده. پس شما نیاز ندارید که حتما windows.h رو داشته باشید. چون gcc از این قسمت رد مییشه چون WIN32_ تعریف نشده ولی به جاش __linux__ تعریف شده.
اون برنامه بدون تغییر کد هم توی لینوکس و هم توی ویندوز بدون تغییر کار میکنه.
Ubuntu 14.04 LTS 64-bit - unity

آفلاین DebianGod

  • Sr. Member
  • *
  • ارسال: 461
  • جنسیت : پسر
  • Ruby
پاسخ : مشکل در کامپایل
« پاسخ #14 : 14 مهر 1392، 07:52 ب‌ظ »
توی اون لینکی که دادم مثالش هست.
در ضمن اون برنامه که نوشتم، اولش چک میکنه که WIN32_ تعریف شده یا نه. اگه تعریف شده باشه میاد و هدر windows رو include میکنه. این فقط توی ویندوز تعریف شده و توی لینوکس تعریف نشده. پس شما نیاز ندارید که حتما windows.h رو داشته باشید. چون gcc از این قسمت رد مییشه چون WIN32_ تعریف نشده ولی به جاش __linux__ تعریف شده.
اون برنامه بدون تغییر کد هم توی لینوکس و هم توی ویندوز بدون تغییر کار میکنه.

میشه برام کامپایل کنی بهم بدی ممنون میشم پروژه رو هم درقالب اکلیپس بده
بدلیل متنفر بودن از ابونتو دیگه این فروم نمیام