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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: sun در 20 تیر 1388، 03:10 ب‌ظ

عنوان: مشکل با ncurses
ارسال شده توسط: sun در 20 تیر 1388، 03:10 ب‌ظ
سلام
من کتابخانه ncurses را با استفاده از دستور  sudo apt-get install libncurses5-dev  نصب کردم ام وقتی می خواهم که از توابعش استفاده کنم ارور می ده
مثلا برای برنامه زیر
#include <curses.h>
#include <iostream>
#include <string.h>
using namespace std;

int main() {
int a=5;
a=getch();
return 0;
}
بخ خط زی ارور میده
نقل‌قول
a=getch();
عنوان: پاسخ به: مشکل با ncurses
ارسال شده توسط: سعید رسولی در 20 تیر 1388، 03:58 ب‌ظ
#include <ncurses.h>نه curses.h (اولش حرف n)
عنوان: پاسخ به: مشکل با ncurses
ارسال شده توسط: sun در 20 تیر 1388، 10:17 ب‌ظ
این هم جواب نداد . این ارور را می دهد
/home/amin/.workspace/ty/Debug/../src/ty.cpp:15: undefined reference to `stdscr'
/home/amin/.workspace/ty/Debug/../src/ty.cpp:15: undefined reference to `wgetch'

و کد برنامه
#include <ncurses.h>
#include <iostream>
#include <string.h>
using namespace std;

int main() {
int x=6;
x=getch();
return 0;
}
عنوان: پاسخ به: مشکل با ncurses
ارسال شده توسط: سعید رسولی در 21 تیر 1388، 03:12 ق‌ظ
اوپشن lncurses- یا  lcurses- رو به gcc بدید.
عنوان: پاسخ به: مشکل با ncurses
ارسال شده توسط: sun در 21 تیر 1388، 12:06 ب‌ظ
چه جوری باید این آپشن را به gcc داد
عنوان: پاسخ به: مشکل با ncurses
ارسال شده توسط: سعید رسولی در 21 تیر 1388، 12:25 ب‌ظ
چه جوری باید این آپشن را به gcc داد
چه جوری؟! :o شما چجوری برنامه رو کامپایل می‌کنید؟! اگه C باشه با gcc
gcc -lncurses example.c -o exampleاگه هم ++C باشه با ++g
g++ -lncurses example.cpp -o example
عنوان: پاسخ به: مشکل با ncurses
ارسال شده توسط: sun در 21 تیر 1388، 02:19 ب‌ظ
من با eclipse برنامه می نویسم و در مورد برای همین زیاد به ساختار gcc وارد نیستم
من این برنامه را کامپایل کردم بدون ارور
#include <ncurses.h>
#include <iostream>
#include <string.h>
using namespace std;

int main() {
int x=6;

cout<<"start\n";
getch();
cout<<"end\n";
return 0;
}
اما در عمل وقتی برنامه را ران می کنم از تابع getch می پرد و اجراش نمی کند
عنوان: پاسخ به: مشکل با ncurses
ارسال شده توسط: سعید رسولی در 21 تیر 1388، 07:49 ب‌ظ
خب ncurses طرز استفادهٔ بخصوصی داره که باید یاد بگیرید. مثل conio.h داس نیست، فرق داره.
#include <ncurses.h>
#include <iostream>
#include <string.h>
using namespace std;

int main() {
int x=6;

initscr();
noecho();

printw("Press a key to continue\n");
//mvprintw(0, 0, "Press a key to continue\n");// row 0, column 0

getch();

printw("Press a key to quit\n");
//mvprintw(1, 0, "Press a key to quit\n");// row 1, column 0

getch();

endwin();
return 0;
}

مثلاً اینکه اول از همه باید تابع initscr رو احضار کنید. برای چاپ کردن متن هم از printw یا mvprintw استفاده کنید. نمی‌دونم میشه با iostream ترکیبش کرد یا نه. ولی با cout که ظاهرا کار نمی‌کنه(یعنی هیچی چاپ نمیشه) نمی‌دونم میشه کاری کرد که cout مثل همین printw رفتار کنه یا نه.
من زیاد به ncurses وارد نیستم. فقط قبلاً یکی دو تا برنامهٔ نسبتا ساده باهاش نوشم. یه چیزی شبیه دستور less رو با پایتون نوشتم اگه خواستید شاید بتونم به C یا ++C تبدیل کنم.
راستی یادمه با متن فارسی هم مشکل داشت. هم توی C و هم توی پایتون. در واقع با یونیکد مشکل داشت و کاراکترهای فارسی رو درست چاپ نمی‌کرد(بر خلاف stdio و iostream که با یونیکد مشکلی ندارن).


منوالش رو هم بخونید بد نیست:
man ncursesالبته باید پکیج manpages-dev نصب باشه.




من با eclipse کار نکردم، گزینه‌ای برای اضافه کردن library ها نداره؟(مثل همین مورد) احتمالا باید داشته باشه! اگه پیدا نکردید، باید با خط فرمان کامپایل کنید.
عنوان: پاسخ به: مشکل با ncurses
ارسال شده توسط: sun در 21 تیر 1388، 08:52 ب‌ظ
کارم راه افتاد از این که جواب سوالاتم را دادی خیلی ممنونم
عنوان: پاسخ به: مشکل با ncurses
ارسال شده توسط: Farshid در 21 تیر 1388، 09:23 ب‌ظ
کارم راه افتاد از این که جواب سوالاتم را دادی خیلی ممنونم
درود

دوست عزیز ی توضیحی می‌دادی که چطور کارت درست شد و ی [حل شد] هم به اول پست‌ت اضافه می‌کردی!!!

ممنونم ;)
عنوان: پاسخ به: مشکل با ncurses
ارسال شده توسط: sun در 22 تیر 1388، 05:56 ق‌ظ
کارم راه افتاد از این که جواب سوالاتم را دادی خیلی ممنونم
درود

دوست عزیز ی توضیحی می‌دادی که چطور کارت درست شد و ی [حل شد] هم به اول پست‌ت اضافه می‌کردی!!!

ممنونم ;)
خوب فکر نکنم نکته مبهمی توی توضیحات بالا باشه برای همین توضیح ندادم. من برنامه مورد نظرم را با خط فرمان کامپایل کردم