View Full Version : سرفایل Conio.h در GCC و ++G
Sundown
دوشنبه 14 اردیبهشت 1388, 17:02 عصر
درود
نمیدونم سوالم رو جای خوبی گذاشتم یا نه ( اگر نه همین جا عذر میخوام )
فکر میکنم هدر Conio.h در GCC وجود ندارد. ظاهرا این هدر مخصوص محیط های بورلند هست.( فکر میکنم ) اما با توجه به توابع مهمی که توی این هدر هست چه جایگزینی برای آن در لینوکس وجود دارد ؟
اگر سرفایل دیگری موجود است آن را از کجا دانلود و در کدام قسمت لینوکس قرار دهم ؟
آیا امکان دارد هدر Conio.h که در ویندوز از آن استفاده میکنم را به لینوکس بیارم و در آنجا از آن استفاده کنم ؟ اگر بلی به کدام قسمت از لینوکس آن را اضافه کنم ؟
در مورد هدر های دیگر مانند Dos.h هم در لینوکس توضیحی بدهید
با سپاس
حامد مصافی
دوشنبه 14 اردیبهشت 1388, 17:27 عصر
سلام
conio جز سرآیند های استاندارد ANSI نیست. لذا در Linux وجود ندارد. همانطور که حدس زدید این هدر فقط در محصولات بورلند وجود دارد. اگر منظور شما از توابع مهم توابعی مانند توابع کار با کرسر است از ncurses.h یا curses.h استفاده کنید (اطلاعات بیشتر (http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/)).
البته انتخاب های دیگری مانند libconio (http://sourceforge.net/projects/libconio) و Linux-conio (http://sourceforge.net/projects/linux-conioh) را نیز می توانید تست کنید.
بدیهیست که dos.h نیز در لینوکس وجود ندارد اما اگر نیازتان را بنویسید شاید بتوان جایگزین دیگری معرفی کرد.
Sundown
دوشنبه 14 اردیبهشت 1388, 20:53 عصر
خیلی ممنون
این هدر ها رو بعد از دانلود کجا اضافه کنم ؟
آیا توابع موجود در این هدر ها دقیقا مانند همان توابع موجود در هدر های بورلند هست؟
مثلا تابع Dalay که در Dos.h هست یا توابع دیگه که خیلی کاربرد دارند ( در این هدر ) برای آنها چه راهی را پیشنهاد میدید ؟
آیا امکان دارد هدر هایی که در ویندوز از آن استفاده میکنم را به لینوکس بیارم و در آنجا از آن استفاده کنم ؟ اگر بلی به کدام قسمت از لینوکس آن را اضافه کنم ؟
بسیار ممنون
حامد مصافی
سه شنبه 15 اردیبهشت 1388, 10:50 صبح
فایل سر آیند را باید به یکی از مسیر های زیر اضافه کنید
/usr/local/include, /opt/include, /usr/include
در صورتی که فایل شما همراه با یک کتابخانه ارائه می شود فایل Lib آن را به یکی از مسیر های زیر اضافه کنید
/usr/local/lib, /opt/lib, /usr/libدر هدر time.h تابعی به نام delay_sec وجود دارد. به تعداد ثانیه های ارسال شده وقفه ایجاد می کند:
delay_sec(5); //delay for 5 seconds
همچنین شما می توانید هدر هایی را که در ویندوز استفاده می کنید به یکی از مسیر های include که ذکر گشت اضافه کرده و از آنها استفاده کنید.
Sundown
سه شنبه 15 اردیبهشت 1388, 16:05 عصر
مرسی از پاسختان
اما وقتی فایل هایی که خودتان لینکشون رو گذاشتید رو به مسیری که گفتید کپی کردم و توسط کامپایلر Gcc خواستم برنامه رو کامپایل کنم به یک سری از ایرادات که درون فایل هدر هست اشاره میکنه !
تقریبا 20 تا مورد ایراد از فایل هدر ( از کدهای درون خود فایل ) میگیره.
وقتی هم هدر های ویندوزی رو به مسیری که گفتید میبرم همون ایرادات به اضافه چندین ( نزدیک 10 تا ) ایراد دیگه هم میگیره.
نمیدونم ایراد کار کجاست. اگر لازم هست بگید تا عکس از ایراداتی که کامپایلر میگه رو بذارم.
در ضمن کدی که من استفاده میکنم اینه. پس قطعا ایراد از کد من نیست. مشکل درون فایل های هدر هست.
#include <stdio.h>
#include <conio.h>
int main()
{
printf("Hello GCC";
}
حتی میبینید که از توابع درون هدر هم استفاده نکردم ولی باز هم ایراد میگیره.
لطفا راهنمایی کنید
حامد مصافی
سه شنبه 15 اردیبهشت 1388, 16:58 عصر
اگر از Linux-conio استفاده می کنید باید پارامتر های کامپایل -lncurses را اضافه کنید.
و اگر تصمیم دارید از libconio استفاده کنید ابتدا باید خود libconio را کامپایل کرده و سپس فایل lib و h آن را مطابق مسیر های پست پیش در سیستم کپی کرده و پارامتر -lconio را در پارامتر های خط فرمان اضافه کنید.
Sundown
سه شنبه 15 اردیبهشت 1388, 19:05 عصر
باید پارامتر های کامپایل -lncurses را اضافه کنید.
و پارامتر -lconio را در پارامتر های خط فرمان اضافه کنید.
میشه توضیح بدید چگونه این کار رو کنم ؟
یعنی زمانی که میخوام کامپایلشون کنم باید این پارامتر ها رو اضافه کنم ؟
ممنون از پیگیریتون
حامد مصافی
سه شنبه 15 اردیبهشت 1388, 19:11 عصر
g++ myfile.cpp -lconio -o outputfile
پارامتر هایی که با -l شروع می شوند به یک فایل مشترک در فولدر lib اشاره می کنند. اگر به جای -l عبارت lib را جایگزین کنید ابتدای نام فایل در فولدر مذکور به دست خواهد آمد:
-lconio --> libconio
libconio.so
libconio.so.1
libconio.so.1.0
...
Sundown
سه شنبه 15 اردیبهشت 1388, 19:15 عصر
آقا خیلی ممنون از توضیح کامل و دقیقتون:تشویق:
ببخشید این پست رو فقط به خاطر تشکر زدم. حیفم اومد برای تشکر فقط به کلیک روی دکمه تشکر اکتفا کنم
ممنون
marzieh64
چهارشنبه 16 آذر 1390, 04:59 صبح
سلام
من میخوام از تابع sqrt که در math.h تعریف شده استفاده کنم اما با اینکه math.h را گذاشتم با اینحال پیغام میده که sqrt رو نمیشناسه.چیکار باید بکنم؟مرسی
Open-Source
پنج شنبه 17 آذر 1390, 00:09 صبح
سلام
من میخوام از تابع sqrt که در math.h تعریف شده استفاده کنم اما با اینکه math.h را گذاشتم با اینحال پیغام میده که sqrt رو نمیشناسه.چیکار باید بکنم؟مرسی
توابع هدرهایی مثل stdio.h بصورت پیش فرض درون glibc قرار داده شدن.
ولی بعضی توابع مثل توابع ریاضی (که درون هدر math.h هستند) ، درون glibc قرار ندارند و باید اونا رو هنگام کامپایل لینک کنی. بصورت زیر: (باستفاده از پارامتر lm-)
gcc main.c -lm
marzieh64
پنج شنبه 17 آذر 1390, 02:06 صبح
ببخشید میشه دقیقا بگید باید چی بنویسم.فرض کنید اسم فایلم test است و می خوام از math.h استفاده کنم.میشه بگید دستوری که گفتید رو باید چجوری بنویسم و اینکه آیا باید قبلا چیزی را جایی گذاشته باشم یا نه؟شرمنده
در ضمن از gedit استفاده میکنم.
marzieh64
چهارشنبه 23 آذر 1390, 19:09 عصر
خودم فهمیدم.اصلا نیازی به کاری نیست.خودش math.h رو میشناسه!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.