انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: 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();
-
#include <ncurses.h>
نه curses.h (اولش حرف n)
-
این هم جواب نداد . این ارور را می دهد
/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;
}
-
اوپشن lncurses- یا lcurses- رو به gcc بدید.
-
چه جوری باید این آپشن را به gcc داد
-
چه جوری باید این آپشن را به gcc داد
چه جوری؟! :o شما چجوری برنامه رو کامپایل میکنید؟! اگه C باشه با gcc
gcc -lncurses example.c -o example
اگه هم ++C باشه با ++g
g++ -lncurses example.cpp -o example
-
من با 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 طرز استفادهٔ بخصوصی داره که باید یاد بگیرید. مثل 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 ها نداره؟(مثل همین مورد) احتمالا باید داشته باشه! اگه پیدا نکردید، باید با خط فرمان کامپایل کنید.
-
کارم راه افتاد از این که جواب سوالاتم را دادی خیلی ممنونم
-
کارم راه افتاد از این که جواب سوالاتم را دادی خیلی ممنونم
درود
دوست عزیز ی توضیحی میدادی که چطور کارت درست شد و ی [حل شد] هم به اول پستت اضافه میکردی!!!
ممنونم ;)
-
کارم راه افتاد از این که جواب سوالاتم را دادی خیلی ممنونم
درود
دوست عزیز ی توضیحی میدادی که چطور کارت درست شد و ی [حل شد] هم به اول پستت اضافه میکردی!!!
ممنونم ;)
خوب فکر نکنم نکته مبهمی توی توضیحات بالا باشه برای همین توضیح ندادم. من برنامه مورد نظرم را با خط فرمان کامپایل کردم