您的位置:程序门 -> vc/mfc -> 进程/线程/dll



[没有分了]afxbeginthread + csocket出现的很奇怪的问题,请教大家!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


[没有分了]afxbeginthread + csocket出现的很奇怪的问题,请教大家![已结贴,结贴人:xiaoxiaospace]
发表于:2007-09-12 09:32:18 楼主
先说一下,程序在pc上时,一些运行正常
但在ppc上,程序出现了错误,原因就在线程这里
代码如下:

void   ct_ppcsockdlg::tproc()
{
csocket   *   sock   =   new   csocket();
if(sock-> create(5567,   1)   ==0)
afxmessagebox(   _t( "init   err ")   );
else
afxmessagebox(   _t( "success ")   );

delete(sock);
}

uint   thread_func(void   *   data)
{
ct_ppcsockdlg   *   pdlg   =   static_cast <ct_ppcsockdlg   *> (data)   ;  
pdlg-> tproc()   ;  
exitthread(0)   ;  

//以前没有,需要返回值
return   1;
}
void   ct_ppcsockdlg::onbnclickedbutton1()
{
//   todo:   在此添加控件通知处理程序代码
decode_thread   =   afxbeginthread(thread_func,   this)   ;  


}

其中对话框初始化时就已经afxsocketinit()了

问题就出现在tproc函数的sock-> create这
程序运行到这,并不会出现afxmessagebox,而是直接报错:
debug   assertion   failed!  
program:\program   files\ppcvideo\ppcvideo.exe  

file:  
f:\rtm\vctools\vc7libsce\ship\atlmfc\include\afxtempl.h  

line:1708  
press   retry   to   debug


--------------------------
我不清楚,到底是怎么出的错,到底是哪出了问题呢???
发表于:2007-09-12 09:33:551楼 得分:0
这是我新见了一个程序,然后,里面就这些代码
并没有其他的什么功能代码

就是,当按牛被按下时,产生一个事件来启动一个线程来调用一个方法
发表于:2007-09-12 09:56:162楼 得分:0
5555555555555555555
发表于:2007-09-12 10:23:313楼 得分:1

看上去没什么错误,帮顶!
发表于:2007-09-12 10:30:244楼 得分:0
555555555555
发表于:2007-09-12 10:33:505楼 得分:4
在线程中也要调用afxsocketinit()   吧   ,你使用getlasterror   看看返回错误或者   看看f:\rtm\vctools\vc7libsce\ship\atlmfc\include\afxtempl.h   文件中的错误是什么。
发表于:2007-09-12 10:44:366楼 得分:0
我在线程执行函数里加上afxsocketinit();就正常了
前提是,必须在csocket前加上
可pc下为什么不会出这样的问题呢?

那个提示的错误也很奇怪
f:\rtm\vctools\vc7libsce\ship\atlmfc\include\afxtempl.h

可实际上,我机器的f盘是个光驱,什么都没有,我的程序在d盘
..............
问题解决了,但不知道为什么会这样


快速检索

最新资讯