QWizard::staticMetaObject() |
qte 프로그램을 컴파일할 때, QWizard::staticMetaObject() 에러가 발생한다면, progen 에서 생성한 pro 파일 에서,
CONFIG = qt warn_on release 를, CONFIG = qtopia warn_on release 로 변경한 후
Makefile 을 다시 생성하고 컴파일한다. 정확한 이유는 모르지만 웹 검색에서는 tmake 와 qtopia 간의 버전 차이로 발생한다고 한다.
/usr/lib/libfontconfig.so.1: undefined reference to 'FT_Get_PS_Font_Info' |
이 에러가 나는 것은 2가지 이유에서이다.
- qtx 와 qte 의 환경, 특히 라이브러리 path 가 모두 잡혀있다.
- freetype 버전이 낮아서 이다.
라이브러리 path 를 확인하고 qtx 와 qte 환경이 같이 잡혀있다면, qtx 나 qte 한개의 환경으로 세팅한 후, 다시 컴파일한다.
이렇게 해도 안된다면 freetype 버전이 낮아서이다. 이 이유를 알게 되었을 때에는 리눅스 초보였던 나에게는 단순히 막막함 이상이었다.
일단 freetype 라이브러리 최신 버전을 찾고, ./configure -help 에서 옵션을 찾아 보았다. prefix 옵션 외에 나머지 옵션은 default 값을 사용하면 될 것 같아 일단 기존의 freetype 가 /usr/include 에 설치 되었던 것을 상기해서 아래와 같이 처리했다.
- http://freetype.sourceforge.net 에 방문한 후 새 버전을 다운받는다.
- 예로 freetype-2.1.10.tar.bz2 를 받았다면,
- # tar jxvf freetype-2.1.10.tar.bz2
- # cd freetype-2.1.10.tar.bz1
- # ./configure --prefix=/usr
- # make
- # make install
한글 출력 |
프로그램은 보통 vi 에서 작성하는데 vi 의 한글 코드는 KSC5601 이지만 qt 는 유니코드를 사용한다. 이런 이유로 한글을 바로 출력하면 qt 에서는 깨져서 출력이된다.
한글을 출력하기 위해서는 3가지 방법이 있다.
- 매크로를 이용하는 방법
#include <qstring.h>
#define kor(str) QString::fromLocal8Bit(str)
QString str = "안녕하세요!!";
setCaption( toUniString( str));
- 코덱을 이용하는 방법
#include <qstring.h>
#include <qtextcodec.h>
QString toUniString(QString str)
{
QTextCodec * codec = QTextCodec::codecForName("eucKR");
QString localeStr = codec->toUnicode(str);return localeStr;
}
QString str = "Hello Word!! 안녕하세요!!";
setCaption( toUniString( str)); - QEucKrCodec 객체 사용
이 객체를 처음 보았을 때에는 야~ 우리나라 언어를 위한 코덱이 다있네하고 놀랬다. 다른 모든 함수를 확인은 못했지만 일본어와 한국어 변환 걔체가 있었다.
#include <qstring.h>
#include <qeuckrcodec.h>
QEucKrCodec* codec = new QEucKrCodec();
char* string="안녕하세요!!";
QString str = codec->toUnicode(string, strlen(string));
setCaption( str);
: undefined reference to 'vtable for TForm' |
- 클랫스의 선언부와 구현부가 같은 파일에 있을 때 발생
- 프로젝트 파일에 헤더파일이 등록되어 있지 않을 때 발생
1.
사용자 슬롯함수를 사용하기 위햐어 Q_OBJECT 매크로를 사용했을 경우, 클래스 선언부와 구현부가 같은 파일에 있을 때, 발생한다.
클래스 선언부를 헤더 파일로 옮기고, 컴파일 제한자를 이용하여 재 선언되는 것을 막는다.
#ifndef JWSLOT_H
#define JWSLOT_H#include ....
class jwClass:public QWidget
{
....
};#endif
2.
이렇게 했는대도 또 같은 에러가 발생한다면, 프로젝트 파일 .pro 를 만들 때, 헤더 파일 정보를 추가하지 않아서 이다.
예로, main.cpp 와 main.h 로 구성했다면,
progen -o app.pro main.cpp main.h
이와 같이 헤더파일도 정확히 지정해 주거나 pro 파일의 HEADERS 항에 직접 입력해 준 다음, Makefile 을 다시 생성하고 컴파일한다.
'Computer Engineering > Linux' 카테고리의 다른 글
쉘 명령어 (0) | 2008.06.03 |
---|---|
윈도우 혹은 리눅스에서 솔라리스 파티션에 접근하기 (0) | 2008.05.30 |
[동영상] 한국어로 진행되는 웹캐스트 - 썬 넷 토크 (0) | 2008.05.08 |
제로보드 파일 첨부 용량 늘리기 (0) | 2008.04.03 |
우분투 설치후 기본 설정 ssh, 한글, ftp , 자바 , 이클립스, sql 설치 (1) | 2008.03.13 |
mysql 재시작 (0) | 2008.02.20 |
제로보드 mysql 세팅하기 (0) | 2008.02.20 |
우분투 apm 설치하기 (0) | 2008.02.19 |
KLDP Wiki 리눅스 커널, 디바이스 드라이버 (0) | 2007.12.22 |
Make 강좌 makefile (0) | 2007.12.08 |