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

کمک و پشتیبانی => نصب، راه‌اندازی و بروزآوری => نویسنده: DebianGod در 12 مهر 1392، 07:21 ب‌ظ

عنوان: مشکل در کامپایل
ارسال شده توسط: DebianGod در 12 مهر 1392، 07:21 ب‌ظ
سلام من برنامه نویسی سی پلاس میکنم سورس هایی که از گیت هاب دانلود میکردم قبلا تو مک کامپایل میشد ولی حالا تو لینوکس نیاز به یه سری include داره که اصلا تو لینوکس نیست فقط تو ویندوز هست با مک باید چیکارد کنم؟
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: احسان☺ - در 12 مهر 1392، 07:44 ب‌ظ
سلام
علیک السلام
من برنامه نویسی سی پلاس میکنم سورس هایی که از گیت هاب دانلود میکردم قبلا تو مک کامپایل میشد
یعنی الان دیگه کامپایل نمیشه؟  :D

حالا تو لینوکس نیاز به یه سری include داره که اصلا تو لینوکس نیست فقط تو ویندوز هست با مک باید چیکارد کنم؟
سوال واضح نیست منظورت کتابخانه هست؟ اون سورس فایل readme چیزی نداره؟اگه داره اینجا بزار.اسم اون include ها چیه؟
اصلا تو لینوکس نیست فقط تو ویندوز هست با مک باید چیکارد کنم؟
اصن این جمله کشته منو
 ;D ;D ;D
 ](*,) ](*,)
 :'( :'(
 ;D ;D
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: DebianGod در 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 در 12 مهر 1392، 08:12 ب‌ظ
#include <stdlib.h>

system( "color 5B" );

اینم نیست
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: احسان☺ - در 12 مهر 1392، 08:50 ب‌ظ
تا اون جا که من فهمیدم(همین الان از سرچ سرسری)نمیشه از windows.h تو لینوکس استفاده کرد.
ببین لینک زیر میتونه کمکی بکنه؟
http://stackoverflow.com/questions/9336282/porting-win32-code-windows-h-to-linux (http://stackoverflow.com/questions/9336282/porting-win32-code-windows-h-to-linux)
با این حال صبر کن که بزرگان هم نظر بدن
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: DebianGod در 12 مهر 1392، 09:00 ب‌ظ
تا اون جا که من فهمیدم(همین الان از سرچ سرسری)نمیشه از windows.h تو لینوکس استفاده کرد.
ببین لینک زیر میتونه کمکی بکنه؟
http://stackoverflow.com/questions/9336282/porting-win32-code-windows-h-to-linux (http://stackoverflow.com/questions/9336282/porting-win32-code-windows-h-to-linux)
با این حال صبر کن که بزرگان هم نظر بدن

وقتی یه نرم افزار رو با gtk میسازند وقتی میخوان برای ویندوز کامپایلش بکنند میارنش روی این و کراس کامپایل میکنند ولی من نمیدونم این لایبری رو از کجا باید بیارم
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: nixoeen در 12 مهر 1392، 09:02 ب‌ظ
سلام من برنامه نویسی سی پلاس میکنم سورس هایی که از گیت هاب دانلود میکردم قبلا تو مک کامپایل میشد ولی حالا تو لینوکس نیاز به یه سری include داره که اصلا تو لینوکس نیست فقط تو ویندوز هست با مک باید چیکارد کنم؟
من سوال رو اینطور متوجه شدم:
یک برنامه داری که یک سری include داره که توی لینوکس نیست و فقط تو ویندوز هست، ولی با این وجود توی مک کامپایل می‌شده. حالا با کامپیوتر مک چه کارایی می‌شه کرد؟

جوابش هم اینه اگر دوست‌ داری به ++C برنامه‌نویسی بکنی، بصورت کلاسیک شروع به یادگیری ++C از ابتدا بکن. اینطوری هم می‌تونی سوالت رو به درستی بپرسی، هم اینکه در دراز مدت وقتت کمتر تلف می‌شه.
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: DebianGod در 12 مهر 1392، 09:17 ب‌ظ
سلام من برنامه نویسی سی پلاس میکنم سورس هایی که از گیت هاب دانلود میکردم قبلا تو مک کامپایل میشد ولی حالا تو لینوکس نیاز به یه سری include داره که اصلا تو لینوکس نیست فقط تو ویندوز هست با مک باید چیکارد کنم؟
من سوال رو اینطور متوجه شدم:
یک برنامه داری که یک سری include داره که توی لینوکس نیست و فقط تو ویندوز هست، ولی با این وجود توی مک کامپایل می‌شده. حالا با کامپیوتر مک چه کارایی می‌شه کرد؟

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

نه . ببین من توی مک و لینوکس با یه کد رنگ متن رو توی cout تغییر میدادم ولی توی نت که گشتم زده برای gcc باید windows.h رو اینگلود بکنی
ولی من این رو ندارم وسلام وقتی هم میارم خود windows.h هزارتا اینکلود دیگه تو خودش داره که اونارو هم ندارم باید از کجا بیارم با این تفاسیر توی مک نیازی به اینکار نبود یه راست میزدی cout  و رنگت رو میزدی
من فکر میکنم لایبرری iostream لینوکس و ویندوز از مک ناقص تره
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: nixoeen در 12 مهر 1392، 09:24 ب‌ظ
برای تغییر رنگ و کارهای مشابه باید از کتابخانه ncurses استفاده کنی.
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: majidkamali1370 در 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

حالا میتونی این برنامه رو بدون تغییر کد در ویندوز و لینوکس کامپایل کنی.
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: DebianGod در 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 رو ندارم
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: امیرحسین گودرزی در 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 (http://linuxgazette.net/issue65/padala.html)

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

ببین حاجی من کلا اینکلود windows.h رو ندارم
خب بگرد و دانلودش کن و توی include ات آدرسشو بده
باید بلد باشی دیگه چطوری یه فایل هدر خارجی رو انکلود کنی یا بگم؟
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: DebianGod در 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 (http://linuxgazette.net/issue65/padala.html)

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

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

مگه اینکلود خارجی اینطوری نیست #include "windows.h"
خب شما یه پروژه hello world بساز که ۴ تا توش باشه هرکدوم یه رنگ دستت درد نکنه
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: majidkamali1370 در 14 مهر 1392، 06:49 ب‌ظ
توی اون لینکی که دادم مثالش هست.
در ضمن اون برنامه که نوشتم، اولش چک میکنه که WIN32_ تعریف شده یا نه. اگه تعریف شده باشه میاد و هدر windows رو include میکنه. این فقط توی ویندوز تعریف شده و توی لینوکس تعریف نشده. پس شما نیاز ندارید که حتما windows.h رو داشته باشید. چون gcc از این قسمت رد مییشه چون WIN32_ تعریف نشده ولی به جاش __linux__ تعریف شده.
اون برنامه بدون تغییر کد هم توی لینوکس و هم توی ویندوز بدون تغییر کار میکنه.
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: DebianGod در 14 مهر 1392، 07:52 ب‌ظ
توی اون لینکی که دادم مثالش هست.
در ضمن اون برنامه که نوشتم، اولش چک میکنه که WIN32_ تعریف شده یا نه. اگه تعریف شده باشه میاد و هدر windows رو include میکنه. این فقط توی ویندوز تعریف شده و توی لینوکس تعریف نشده. پس شما نیاز ندارید که حتما windows.h رو داشته باشید. چون gcc از این قسمت رد مییشه چون WIN32_ تعریف نشده ولی به جاش __linux__ تعریف شده.
اون برنامه بدون تغییر کد هم توی لینوکس و هم توی ویندوز بدون تغییر کار میکنه.

میشه برام کامپایل کنی بهم بدی ممنون میشم پروژه رو هم درقالب اکلیپس بده
عنوان: پاسخ : مشکل در کامپایل
ارسال شده توسط: majidkamali1370 در 15 مهر 1392، 09:27 ق‌ظ
من این برنامه رو توی لینوکس کامپایل کردم مشکلی نداشت. با اینکه هدر windows ندارم.
#include <stdio.h>
#include <iostream>

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

#define RESET 0
#define BRIGHT 1
#define DIM 2
#define UNDERLINE 3
#define BLINK 4
#define REVERSE 7
#define HIDDEN 8

#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define MAGENTA 5
#define CYAN 6
#define WHITE 7

void textcolor(int attr, int fg, int bg);

int main()
{
textcolor(BRIGHT, RED, BLACK);
std::cout << "In Color\n";
textcolor(RESET, WHITE, BLACK);
return 0;
}

void textcolor(int attr, int fg, int bg)
{
#ifdef _WIN32
system("color YOUR_COLOR_HERE");
#endif

#ifdef __linux__
char command[13];

/* Command is the control command to the terminal */
sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
printf("%s", command);
#endif
}
اینجا رو هم ببینی بد نیست.
http://sourceforge.net/p/predef/wiki/OperatingSystems/