شما هنوز به سیستم وارد نشده اید.

#1 2018-08-04 17:08:41

mr-noip
عضو
ثبت شده: 2018-07-13
ارسال ها: 3

کتابخانه conio.h در gcc

سلام دوستان.بنده به تازگی در حال یادگیری برنامه نویسی زبان سی هستم.در gcc مثل اینکه فایل کتابخونه conio.h موجود نیست.ایا فقط اسم تغییر کرده یا کلا وجود نداره؟و اینکه من چطور میتونم فایل کتابخانه ای در gcc قرار بدم و استفاده کنم؟
از فایل کتابخانه ncurses.h هم که استفاده میکنم برای تابع getch() موقع کامپایل این مشکل رو دارم.

/tmp/ccv1cMxg.o: In function `main':
newfile1.c:(.text+0xb): undefined reference to `stdscr'
newfile1.c:(.text+0x13): undefined reference to `wgetch'
collect2: error: ld returned 1 exit status

آخرین ویرایش توسط mr-noip (2018-08-04 17:10:04)

آفلاین

#2 2018-08-04 21:16:02

Arcush
Moderator
ثبت شده: 2015-09-15
ارسال ها: 1,410

پاسخ: کتابخانه conio.h در gcc

درود. می تونید این طوری کامپایلش کنید (که فرض کرده ایم اسم فایلتون main.c هست):

$  gcc -o main main.c -lncurses -ltinfo

هِدِر conio.h در زمرهٔ استاندارهای POSIX قرار نداره (و بنابراین شما دارید از معادل ناپرسونی (== نادقیق) از اون در لینوکس استفاده می کنید که دست کم ()getch را در اختیارتون قرار میده. این موضوع را می تونید با دیدن خروجیِ

$ nm -D /usr/lib/libncurses.so.5 | grep -E "getch"
000000000000b700 T getch
000000000000bab0 T mvgetch
000000000000bfe0 T mvwgetch
0000000000015360 T _nc_ungetch
000000000000c8a0 T _nc_wgetch
0000000000015440 T ungetch
000000000000d690 T wgetch

تحقیق کنید*).

همچنین برای معادلی استاندارد، اینجا را برای نمونه ببینید:
https://stackoverflow.com/questions/918 … nd-getchar

به یقین، دوستان برنامه نویس انجمن میتونن در مسیر یادگیری C بهتر یاریتون کنند. ولی استفاده از  conio.h نشون میده احتمالن باید هدف و منبع یادگیریتون را ذکر کنید تا بتونیم با همرسانیِ دانش و تجربه مون اونها را بهبود بدیم (بویژه اگر میخواهید در لینوکس یاد بگیرید).
-------------
ویرایش:
*) چون به آرچ (بیس ها) دسترسی نداشتم این دستور را در سابایون امتحان کردم.

آخرین ویرایش توسط Arcush (2018-08-04 21:17:36)

آفلاین

#3 2018-08-04 23:44:57

morealaz
عضو
از : کرمان
ثبت شده: 2016-03-19
ارسال ها: 312

پاسخ: کتابخانه conio.h در gcc

همونجور که arcush عزیز گفتند فایل conio.h جزء کتابخانه استاندارد C و همچنین POSIX نیست و مربوط به سیستم عامل DOS میشه. به عنوان جایگزینش هم میتونید در سیستمهای عامل شبه یونیکس از کتابخانه Curses یا Ncurses به عنوان نسخه بهبود یافته اون استفاده کنید.
در مورد شیوه استفاده از کتابخانه های مختلف هم به این صورت هست که هر کتابخانه یه سری فایل هدر داره و یک سری هم فایل library که به هنگام کامپایل برنامه در صورتی که از اونها استفاده کردید باید به کامپایلر آدرس فایلهای header و به لینکر آدرس فایلهای library رو بدید در این زمینه بهتره یه سرچ بزنید که بهتر بفهمید و در اینجا نمیشه کل بحث رو گفت

آفلاین

پانوشت انجمن

پشتیبانی توسط تیم آرچ لینوکس ایران و نیرو گرفته با FluxBB