윈도 비스타에서는 어쩔 수 없이 VS2005 SP1을 사용해야 한다. 그런데 윈도 비스타에서 VS2005 SP1을 사용하여 아마 QMap/QHash가 들어간 프로그램을 컴파일하는데 오류가 생겼다. 다행히토 트롤텍은 둘러가기 패치를 제공하고 있었지만, 이마저도 듣지 않았다. 그래서 이 문제 가지고 MSDN과 각종 Qt 포럼이 아직도 들썩대고 있다.
그런데 그 둘러가기 패치의 코드와 내가 가지고 있는 Qt의 문제성 헤더의 줄 번호가 약간씩 차이가 났다. 그리고 둘러가기 패치는 그 주변 코드를 알 수가 없어서 뭐가 문젠지 알아내는 데 시간이 좀 걸렸다. 실제로 내가 적용시킨 것은 다음과 같다.
<QHash.h>
일단 390줄 부근에서 찾기 바란다.
private:
// ### Qt 5: remove
inline operator bool() const { return false; }
};
friend class const_iterator;
typedef typename QHash<Key, T>::iterator DummyHashIterator;
// STL style
inline iterator begin() { detach(); return iterator(d->firstNode()); }
inline const_iterator begin() const { return const_iterator(d->firstNode()); }
그리고 한 890줄 부근에 있다.
public:
QMultiHash() {}
QMultiHash(const QHash<Key, T> &other) : QHash<Key, T>(other) {}
inline typename QHash<Key, T>::iterator replace(const Key &key, const T &value);
inline typename QHash<Key, T>::iterator insert(const Key &key, const T &value);
inline typename DummyHashIterator replace(const Key &key, const T &value);
inline typename DummyHashIterator insert(const Key &key, const T &value);
inline QMultiHash &operator+=(const QMultiHash &other)
{ unite(other); return *this; }
파란색 부분을 찾은 다음 지우고 빨간색으로 바꾸면 된다.
<QMap.h>
310줄 부근에서 찾기 바란다.
private:
// ### Qt 5: remove
inline operator bool() const { return false; }
};
friend class const_iterator;
typedef typename QMap<Key, T>::iterator DummyMapIterator;
// STL style
inline iterator begin() { detach(); return iterator(e->forward[0]); }
inline const_iterator begin() const { return const_iterator(e->forward[0]); }
그리고 한 890줄 부근에 있다.
public:
QMultiMap() {}
QMultiMap(const QMap<Key, T> &other) : QMap<Key, T>(other) {}
inline typename QMap<Key, T>::iterator replace(const Key &key, const T &value);
inline typename QMap<Key, T>::iterator insert(const Key &key, const T &value);
inline typename DummyMapIterator replace(const Key &key, const T &value);
inline typename DummyMapIterator insert(const Key &key, const T &value);
inline QMultiMap &operator+=(const QMultiMap &other)
{ unite(other); return *this; }
파란색 부분을 지우고 빨간색 부분으로 바꾸기 바란다. 그 결과 해결되는 척 하였다.

그 여느 사진과 다를 바 없는 V43이다.
흔히들 마삼이라고 부르는 V43/Qtopia 부팅 화면이다. 오리지널 V43과는 조금 다르다. 많은 사람이 Qtopia를 운영체제라고 오해하는데, Qtopia는 그놈, KDE와 같은 데스크탑 환경이다. 단지 임베디드용으로 특화되었을 뿐.
배터리를 뽑았다 끼워도 시간은 유지되어 있다. 와 ㅁㄴㅇㄹ!
크라스탈과 하이컬러 아이콘을 이식해서 데스크탑 KDE 분위기 내 보려고 삽질하다가 만 것. 설정 탭이 지댄데 못 보여줘서 ㅈㅅ.
마지막으로 파이썬 재컴파일 기념 샷.