도와주세요!!
글 수 15,339
2007.10.02 19:22:49 (*.138.12.165)
6692
안녕하세요.
우선 make가 안되는 이유부터 말씀을 드리겠습니다.
에러 내용 main.cpp:7: error: parse error before `public' 을 보시면 확인하실수 있겠습니다만,
class TClass::public QWidget 에서 : 이 2개로 입력하셨네요. 1개로 입력하셔야 합니다.
즉, class TClass:public QWidget 이렇게 말이죠.
>>>> 1. 보드에 qt를 올릴때 qtopia2.1.1설치기에 있는것처럼...qt-embedded의 라이브러리는 올릴 필요가 없나요?
arm용 qtopia 이미지를 만드셨다면 그 안에 필요한 라이브러리가 들어 있습니다. 그러므로 이미지 파일을 모두 보드에 복사하셨다면 따로 qt 라이브러리를 복사해 넣으실 필요가 없습니다.
>>>> 2. ez-x5보드와 Lcd를 이용 로봇을 제어하고 상태를 볼수 있도록 하려면 어떤순서로 공부를 해야 할까요?
로봇 제어라면 참 재밌는 것을 하시는 군요. 다른 분들께 학습 과제로 권하는 것이 그래픽이나 가능하다면 로봇제어입니다. 재밌거든요. 로봇 모양은 아니지만 예전에 공장 자동화에서 자동화 기기를 많이 해 보아서인지 모르지만 눈으로 보고 직접 다룰 수 있어서 지루하지 않게 학습하실 수 있어 매우 좋은 주재라고 생각합니다.
학습 순서를 질문하셨습니다만 드릴 말씀이 광범위하고, 이재민님을 제가 잘 모르기 때문에 어떻게 말씀을 드려야할지 몰라 조금 당혹스러워서 후배에게 늘 하던 얘기를 정리해서 올리겠습니다. 혹 글 내용이 맞지 않더라도 양해를 부탁드립니다. ^^
1. 프로그래밍 언어 학습
제일 먼저 프로그래밍 언어에 대한 학습이 필요합니다. C++을 사용한다고 해도 C 언어를 먼저 학습하시고, 마저 C++을 학습하실 것을 권하고 싶습니다. 언어에 대해 완전히 통달하고 다음 진도를 나가시면 좋겠습니다만 이것은 정말 힘들고 제가 생각해서는 불가능하면서 무식한 행동으로 생각합니다.
대신에 언어를 전반적으로 이해하시고, 간단한 예제라도 직접 작성하시고, 로봇을 만들 수 있는 환경이 된다면 전체가 아닌 부분 제어만이라도 하는 간단한 프로그램을 직접 작성하시면서 언어를 익혀 나가시기를 권하고 싶습니다.
결론적으로 언어에 대한 자신감을 가져야 한다는 말씀을 드리고 싶습니다.
2. 네트워크 프로그래밍
이는 비단 로봇제어 뿐만 아니라 모든 프로그램에서는 약방의 감초입니다. 통신 중에서도 시리얼 통신을 먼저해 보실 것을 꼭 권하고 싶습니다. 요즘 소켙 통신을 많이 사용한다고 해도 시리얼은 통신의 기본이라도 생각합니다. 이후에는 TCP/IP, UDP/IP와 같은 소켙통신도 반드시 해야 합니다. 리눅스는 곧 통신이라는 말이 있어서가 아니라 제어에서는 통신을 빼 놓고서는 얘기할 수 없기 때문입니다.
3. 그래픽 프로그래밍
LCD 출력이 필요하시다고 하셔서 그래픽 프로그래밍에 대해 말씀드립니다. 그래픽 프로그래밍은 비단 로봇제어 뿐만 아니라 언어를 학습하시는데, 즐거움을 주고, 지루함이 없는 좋은 학습 소재입니다. 또한 훌륭한 학습 소재일 뿐만 아니라 화면 출력은 매우 중요한 요소이므로 학습과 함께 실전에 사용할 실력을 쌓을 수 있어 매우 좋습니다.
이상과 같이 말씀을 드렸습니다만 부족하기만 하네요. 벌써 30분넘게 적으면서 쓰고 지우기를 여러번 했지만 어떻게 도움이 되었는지 모르겠습니다.
부족한 글이라도 이해해 주시면 감사하겠습니다. ^^
>길석님께서 강좌 올려주신 프로그램 입니다.
>#include<qapplication.h>
>#include<qwidget.h>
>#include<qstring.h>
>
>#define kor(str) QString::fromLocal8Bit(str)
>
>class TClass::public QWidget
>{
>public:
> TClass();
>}
>
>TClass::TClass()
>{
> setCaption(kor("안녕!!"));
> resize(150,100);
>}
>
>int main(int argc, char **argv)
>{
> QApplication app(argc, argv);
> TClass obj;
> app.setMainWidget(&obj);
> obj.show();
>
> return app.exec();
>}
>
>이대로 타이핑을 해서 메이크를 했습니다. qt는 qtopia2.1.1설치기를 그대로 했구요
>페도라 코어 5를 설치했으며...gcc는 3.4를 설치했습니다..
>hello 프로그램은 제대로 동작하는것을 보았습니다.
>
>제가 진행한 것을 그대로 써보겠습니다.
>source qte-arm.env
>vim main.cpp
>progen -o hello.pro main.cpp
>vim hello.pro에서 CONFIG에서 qt를 qtopia로 수정한 뒤
>tmake -o Makefile hello.pro
>make 를 했더니..
>
>arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/qt/qte-arm/include -I/qt/qpe-arm/include -o main.o main.cpp
>main.cpp:7: error: parse error before `public'
>main.cpp:14: error: invalid use of undefined type `struct TClass'
>main.cpp:7: error: forward declaration of `struct TClass'
>main.cpp: In constructor `TClass::TClass()':
>main.cpp:15: error: `setCaption' undeclared (first use this function)
>main.cpp:15: error: (Each undeclared identifier is reported only once for each
> function it appears in.)
>main.cpp:16: error: `resize' undeclared (first use this function)
>main.cpp: In function `int main(int, char**)':
>main.cpp:22: error: aggregate `TClass obj' has incomplete type and cannot be
> defined
>make: *** [main.o] 오류 1
>[root@localhost application]#
>
>C언어만 조금 해보고...C++은 예~~~전에 한번 봤던지라 힘드네요...
>
>아..또..몇가지 궁금증이 있습니다. ^^:;
>1. 보드에 qt를 올릴때 qtopia2.1.1설치기에 있는것처럼...qt-embedded의 라이브러리는 올릴 필요가 없나요?
>2. ez-x5보드와 Lcd를 이용 로봇을 제어하고 상태를 볼수 있도록 하려면 어떤순서로 공부를 해야 할까요?
우선 make가 안되는 이유부터 말씀을 드리겠습니다.
에러 내용 main.cpp:7: error: parse error before `public' 을 보시면 확인하실수 있겠습니다만,
class TClass::public QWidget 에서 : 이 2개로 입력하셨네요. 1개로 입력하셔야 합니다.
즉, class TClass:public QWidget 이렇게 말이죠.
>>>> 1. 보드에 qt를 올릴때 qtopia2.1.1설치기에 있는것처럼...qt-embedded의 라이브러리는 올릴 필요가 없나요?
arm용 qtopia 이미지를 만드셨다면 그 안에 필요한 라이브러리가 들어 있습니다. 그러므로 이미지 파일을 모두 보드에 복사하셨다면 따로 qt 라이브러리를 복사해 넣으실 필요가 없습니다.
>>>> 2. ez-x5보드와 Lcd를 이용 로봇을 제어하고 상태를 볼수 있도록 하려면 어떤순서로 공부를 해야 할까요?
로봇 제어라면 참 재밌는 것을 하시는 군요. 다른 분들께 학습 과제로 권하는 것이 그래픽이나 가능하다면 로봇제어입니다. 재밌거든요. 로봇 모양은 아니지만 예전에 공장 자동화에서 자동화 기기를 많이 해 보아서인지 모르지만 눈으로 보고 직접 다룰 수 있어서 지루하지 않게 학습하실 수 있어 매우 좋은 주재라고 생각합니다.
학습 순서를 질문하셨습니다만 드릴 말씀이 광범위하고, 이재민님을 제가 잘 모르기 때문에 어떻게 말씀을 드려야할지 몰라 조금 당혹스러워서 후배에게 늘 하던 얘기를 정리해서 올리겠습니다. 혹 글 내용이 맞지 않더라도 양해를 부탁드립니다. ^^
1. 프로그래밍 언어 학습
제일 먼저 프로그래밍 언어에 대한 학습이 필요합니다. C++을 사용한다고 해도 C 언어를 먼저 학습하시고, 마저 C++을 학습하실 것을 권하고 싶습니다. 언어에 대해 완전히 통달하고 다음 진도를 나가시면 좋겠습니다만 이것은 정말 힘들고 제가 생각해서는 불가능하면서 무식한 행동으로 생각합니다.
대신에 언어를 전반적으로 이해하시고, 간단한 예제라도 직접 작성하시고, 로봇을 만들 수 있는 환경이 된다면 전체가 아닌 부분 제어만이라도 하는 간단한 프로그램을 직접 작성하시면서 언어를 익혀 나가시기를 권하고 싶습니다.
결론적으로 언어에 대한 자신감을 가져야 한다는 말씀을 드리고 싶습니다.
2. 네트워크 프로그래밍
이는 비단 로봇제어 뿐만 아니라 모든 프로그램에서는 약방의 감초입니다. 통신 중에서도 시리얼 통신을 먼저해 보실 것을 꼭 권하고 싶습니다. 요즘 소켙 통신을 많이 사용한다고 해도 시리얼은 통신의 기본이라도 생각합니다. 이후에는 TCP/IP, UDP/IP와 같은 소켙통신도 반드시 해야 합니다. 리눅스는 곧 통신이라는 말이 있어서가 아니라 제어에서는 통신을 빼 놓고서는 얘기할 수 없기 때문입니다.
3. 그래픽 프로그래밍
LCD 출력이 필요하시다고 하셔서 그래픽 프로그래밍에 대해 말씀드립니다. 그래픽 프로그래밍은 비단 로봇제어 뿐만 아니라 언어를 학습하시는데, 즐거움을 주고, 지루함이 없는 좋은 학습 소재입니다. 또한 훌륭한 학습 소재일 뿐만 아니라 화면 출력은 매우 중요한 요소이므로 학습과 함께 실전에 사용할 실력을 쌓을 수 있어 매우 좋습니다.
이상과 같이 말씀을 드렸습니다만 부족하기만 하네요. 벌써 30분넘게 적으면서 쓰고 지우기를 여러번 했지만 어떻게 도움이 되었는지 모르겠습니다.
부족한 글이라도 이해해 주시면 감사하겠습니다. ^^
>길석님께서 강좌 올려주신 프로그램 입니다.
>#include<qapplication.h>
>#include<qwidget.h>
>#include<qstring.h>
>
>#define kor(str) QString::fromLocal8Bit(str)
>
>class TClass::public QWidget
>{
>public:
> TClass();
>}
>
>TClass::TClass()
>{
> setCaption(kor("안녕!!"));
> resize(150,100);
>}
>
>int main(int argc, char **argv)
>{
> QApplication app(argc, argv);
> TClass obj;
> app.setMainWidget(&obj);
> obj.show();
>
> return app.exec();
>}
>
>이대로 타이핑을 해서 메이크를 했습니다. qt는 qtopia2.1.1설치기를 그대로 했구요
>페도라 코어 5를 설치했으며...gcc는 3.4를 설치했습니다..
>hello 프로그램은 제대로 동작하는것을 보았습니다.
>
>제가 진행한 것을 그대로 써보겠습니다.
>source qte-arm.env
>vim main.cpp
>progen -o hello.pro main.cpp
>vim hello.pro에서 CONFIG에서 qt를 qtopia로 수정한 뒤
>tmake -o Makefile hello.pro
>make 를 했더니..
>
>arm-linux-g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG -I/qt/qte-arm/include -I/qt/qpe-arm/include -o main.o main.cpp
>main.cpp:7: error: parse error before `public'
>main.cpp:14: error: invalid use of undefined type `struct TClass'
>main.cpp:7: error: forward declaration of `struct TClass'
>main.cpp: In constructor `TClass::TClass()':
>main.cpp:15: error: `setCaption' undeclared (first use this function)
>main.cpp:15: error: (Each undeclared identifier is reported only once for each
> function it appears in.)
>main.cpp:16: error: `resize' undeclared (first use this function)
>main.cpp: In function `int main(int, char**)':
>main.cpp:22: error: aggregate `TClass obj' has incomplete type and cannot be
> defined
>make: *** [main.o] 오류 1
>[root@localhost application]#
>
>C언어만 조금 해보고...C++은 예~~~전에 한번 봤던지라 힘드네요...
>
>아..또..몇가지 궁금증이 있습니다. ^^:;
>1. 보드에 qt를 올릴때 qtopia2.1.1설치기에 있는것처럼...qt-embedded의 라이브러리는 올릴 필요가 없나요?
>2. ez-x5보드와 Lcd를 이용 로봇을 제어하고 상태를 볼수 있도록 하려면 어떤순서로 공부를 해야 할까요?
항상 감사하게 생각하고 있습니다 30분씩이나..^^;; 완전 감동입니다..^^