关于使用CCriticalSection的问题

lifeforu 北京赛智科技有限公司 项目经理  2006-06-28 12:32:42
接上,问题依然没有解决,又发现新的问题。
见http://community.csdn.net/Expert/topic/4817/4817114.xml?temp=.275448
在网上找了一些,居然没有发现和我同样的问题:
前面我所说的在非动态库程序中使用这些代码可正常运行,没想到在一个新的程序中使用的时候又出现了问题,问题在于:
static CCriticalSection m_cs;//这样一个静态成员变量就好像没有被初始化一样,或者说是::initializeCriticalsection()这个函数在初始化CCriticalSection的成员变量的时候失败,具体表现在m_cs.DebugInfo == 0;此时使用CSingleLock失败。

不知道何解?居然在网上没找到一个同样的错误,看来非得弃用这些用API?
...全文
232 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
DentistryDoctor 2006-06-29
声明的方式都没问题。可能是因为同步的问题造成的。
回复
francsescoli 2006-06-28
对啊,static的变量,需要在cpp文件中初始化.
CCriticalSection myclass::m_cs;
然后使用。
回复
hamimelon 2006-06-28
不要在CThread的构造函数中启动线程!!!!!!
回复
pomelowu 2006-06-28
是不是只声明了没有定义?

.h文件里声明:
class myclass
{
static CCriticalSection m_cs;
}

.cpp文件里实现一下,不然会出错:
CCriticalSection myclass::m_cs = NULL;
回复
lifeforu 2006-06-28
是的。
回复
pomelowu 2006-06-28
static CCriticalSection m_cs;

你定义的静态类成员?
回复
发帖
进程/线程/DLL
创建于2007-09-28

1.5w+

社区成员

VC/MFC 进程/线程/DLL
申请成为版主
帖子事件
创建了帖子
2006-06-28 12:32
社区公告
暂无公告