VC macro __FUNCTION__ UNICODE에서 사용하기

디버깅 편의를 위하여
#define __T_PRINT(val)  val.Print(__FUNCTION__, __FILE__, __LINE__)
과 같이 이용하고 있습니다. 매번 __FUNCTION__, __FILE__을 명시하기 귀찮아서...

멀티바이트로 컴파일시에는 문제가 없으나 유니코드로 컴파일시에는 
error C2664: 'CTimeCounter::Print' : 매개 변수 1을(를) 'const char [26]'에서 'CString'(으)로 변환할 수 없습니다.
와 같이 오류가 발생하네요

#define __T_PRINT(val)  val.Print(_T(__FUNCTION__), _T(__FILE__), __LINE__)

혹은

#ifdef _UNICODE
    #define WIDEN(x)           L ## x
    #define WIDEN2(x)         WIDEN(x)
    #define __WFILE__          WIDEN2(__FILE__)
    #define __WFUNCTION__ WIDEN2(__FUNCTION__)
#else
    #define __WFILE__          __FILE__
    #define __WFUNCTION__ __FUNCTION__
#endif

와 같이 변경하여 사용해야 컴파일시 오류가 발생하지 않습니다.

_T()를 역추적하면...
#define __T(x)      L ## x
#define _T(x)       __T(x)
라고 되어있네요.

#define __WFUNCTION__ L ## __FUNCTION__
와 같이 바로 L ## x 로 변경시
error C2065: 'L__FUNCTION__' : 선언되지 않은 식별자입니다.
와 같은 오류가 나는것으로 봐서는 전처리 순서때문에 생기는 문제 같네요.

다국어 처리를 위한 Unicode변환.. 생각보다 손이 많이 가진다는..
2008/03/14 18:47 2008/03/14 18:47
태그 : ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[python] Python에서 MSSQL 사용하기

Python module:
    http://pymssql.sourceforge.net

장애 1)

    Traceback (most recent call last):
      File "/email_server/src/server/spam/xspam_centerlog.py", line 8, in ?
      File "/usr/local/python2.4.2/lib/python2.4/site-packages/pymssql.py", line 30, in ?
        import _mssql
    ImportError: /usr/local/python2.4.2/lib/python2.4/site-packages/_mssql.so: undefined symbol: dbcolinfo

조치 1)

    http://www.freetds.org/software.html 에서 FreeTDS-stable.tgz 을 다운받아 설치한다.
    직접 다운받기 : http://ibiblio.org/pub/linux/alpha/fre ··· able.tgz

장애 2)   

    Traceback (most recent call last):
      File "/email_server/src/server/spam/xspam_common.py", line 79, in xspam_main
      File "/email_server/src/server/spam/xspam_centerlog.py", line 20, in proc_main
      File "/usr/local/python2.4.2/lib/python2.4/site-packages/pymssql.py", line 328, in connect
        con = _mssql.connect(dbhost, dbuser, dbpasswd)
    error: DB-Lib error message 20009, severity 9:
    Server is unavailable or does not exist.

조치 2)

  dbhost에 port까지 명시한다.

  con = pymssql.connect( host='192.168.0.10:1433', user='sa', password='', database='temp')
  cur = con.cursor()
2008/03/06 14:34 2008/03/06 14:34
태그 : ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[python] mod_python 오류

TRAC 0.10.4 => 0.11b1 업데이트후 다음과 같은 오류 발생

[Mon Feb 18 19:49:02 2008] [notice] child pid 22852 exit signal Segmentation fault (11)

확인 사항

$ ldd /opt/lampp/bin/httpd | grep expat
libexpat.so.0 => /opt/lampp/lib/libexpat.so.0 (0xb7e8c000)

$ strings /usr/lib/libexpat.so.0 | grep expat_
expat_1.95.2

혹은

$ ps aux | grep http | head -3
root      3625  0.0  0.6 31068 12836 ?       SN   Sep25   0:08 /usr/sbin/httpd
apache   24814  0.0  0.7 34196 15604 ?       SN   04:11   0:00 /usr/sbin/httpd
apache   24815  0.0  0.7 33924 15916 ?       SN   04:11   0:00 /usr/sbin/httpd

$/usr/sbin/lsof -p 3625 | grep expat
httpd   3625 root  mem    REG     253,0   123552    6409040 /opt/lampp/lib/libexpat.so.0.1.0

$ strings /usr/lib/libexpat.so.0.5.0 | grep expat_
expat_1.95.2

# python
Python 2.4.4 (#2, Feb 12 2008, 13:08:42)
[GCC 4.1.1 20070105 (Red Hat 4.1.1-52)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyexpat
>>> pyexpat.version_info
(1, 95, 8)

Apache에서 사용되어지는 expat 라이브러리와 Python에서 사용하는 라이브러리 버전이 달라서 생기는 현상임.

해결방법

/opt/lampp/lib/libexpat.a ->  /usr/lib/libexpat.a
/opt/lampp/lib/libexpat.so -> /lib/libexpat.so
2008/02/25 19:01 2008/02/25 19:01
태그 : , ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다