2009年6月26日星期五

boost::thread和boost::bind的用法

本来我是这么用的:
class A{
public:
    void do_something(int a){
        cout<<a<<endl;
    }
};

A a1;
A a2;
boost::thread t1(boost::bind(&A::do_something, a1, 1));
boost::thread t1(boost::bind(&A::do_something, a2, 2));

但是这段代码在MinGW g++ 3.4.5上面怎么也编不过.

换个用法:
class A{
    void do_something(int a){
        boost::thread t1(boost::bind(&A::do_something, this, a));
        t1.join();
    }
};
A a1,a2;
a1.do_something();
a2.do_something();
这样写就ok,奇怪,到底是哪个参数写错了?? --
caosuwei

2009年6月22日星期一

strcpy用错了

今天用strcpy的时候犯错误了.
strcpy(&buf[2], buf, 5);
这样出来的结果并不是预期的.

其实以前也遇到过这个问题,但是今天写程序的时候还是写错了,出了bug才想起来这个.还是记下来吧.

--
caosuwei

2009年6月21日星期日

今天google map 总是出错

明明是在这个地方,却总是说我在北理工校园里面
要是就是根本找不到我的位置。
google又出啥问题了??

2009年6月13日星期六

周末在家无聊

上午去了趟北医三院,7点到的,天,排队的就已经到了看不到队尾的程度了,空气污浊,人声嘈杂。最囧的是等排到我的时候,挂号窗口就挂出了免战牌:"运动医学全天已满"。
没办法,又晕头晕脑的坐公交回来。等车的时候还碰着一个医托,问我:"没挂上号吧?"
我:"是啊,人太多了。"
托:"你挂什么科?"
我:"运动医学"
托:"恩,我也是啊,什么毛病?"
我:"脚踝,老毛病了"
托:"恩,我也是啊"
这时候我就又点怀疑这人干吗的了,就随便敷衍了他几句,然后他开始给我推荐什么什么医院好,从哪儿坐车。md,果然是个托,就没理他,走开了。
他们这样是靠什么赚钱呢?
(照片和内容无关)

2009年6月4日星期四

在vs2008里面配置qt环境

在vs2008里面配置qt环境
用VC编译完QT之后有个qmake,可以用来生成makefile,这个能用在gcc或是mingwm上
面.如果加上-t vcapp 就能生成.dsw文件,能用vc6.0以上版本打开.
用法如下:
qmake -project -t vcapp
qmake
就ok了.

但其实这个东西完全可以自己设置一下,也算了解一下Qt的程序是怎么编译出来的.
在工程的属性里面加上相应的
Additional Include Directories 加上
Qt\include\QtCore;Qt\include\QtGui;Qt\include,
c/C++->Perpreocessor->Preprocessor Definitions里面加上
_WINDOWS;UNICODE;QT_LARGEFILE_SUPPORT;QT_DLL;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT;WIN32
linker->General->Additional Library Directories里面加上Qt\lib,
linker->Input->Additional Dependencies里面加上 Qt\lib\qtmaind.lib
Qt\lib\QtGuid4.lib Qt\lib\QtCored4.lib

以上这些都能在demo里面找到例子,和一般的库的添加过程一样,如果有错都能自己
对照着改正过来.
但其实qmake做的一件最重要的事情是下面这个.
在处理Q_OBJECT宏的方式上,Qt其实是在qmake生成的makefile里面调用了Qt\bin\
moc.exe
默认的处理方式是对包含Q_OBJECT宏的aa.h文件进行处理,生成一个moc_aa.cpp
如果自己配置,就要在这个包含Q_OBJECT宏的aa.h的属性里面加一个Custom Build Step
Custom Build Step->General->Command Line里面加上 moc $(InputFileName) -p
../ > moc\moc_$(InputName).cpp
Custom Build Step->General->Outputs里面加上moc_$(InputName).cpp
这两个文件名可以自己定义.

------------------EOF---------------EOF------------------