VC6 xpsp2 编译能通过,但是提示"试图执行系统不支持的操作".

qq271991628 2008-03-15 10:23:29
VC6 xpsp2 编译能通过,但是提示"试图执行系统不支持的操作".
...全文
171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq271991628 2008-03-16
  • 打赏
  • 举报
回复
谢谢lyserver 。
mr.zhoux 2008-03-15
  • 打赏
  • 举报
回复
需要改个地方

在CScoketEx里操作的是CChatClientDlg的指针,不能在该类里面申明对象,是没意义的,改成

class CSocketEx : public CSocket
{
// Attributes
public:

// Operations
public:
CChatClientDlg *m_pClientDlg;
CSocketEx(CChatClientDialog *pDlg)
{
m_pClientDlg = pDlg;
}
..
}


void CSocketEx::OnReceive(int nErrorCode)
{
if(m_pClientDlg != NULL)
m_pClientDlg ->Get();

CSocket::OnReceive(nErrorCode);
}





..


void CLoginDlg::OnOK()
{
UpdateData(TRUE);

g_ClientSocket = new CSocketEx(this);

...
}
ahuisafe 2008-03-15
  • 打赏
  • 举报
回复
up
qq271991628 2008-03-15
  • 打赏
  • 举报
回复
我已经把代码 贴到附件里了啊!
lyserver 2008-03-15
  • 打赏
  • 举报
回复
指针非法读写。贴源代码看看。
lyserver 2008-03-15
  • 打赏
  • 举报
回复
我没用过MFC,不过刚才看了你的源代码,感觉有几处错误,具体如下:
1.是全局对象指针变量g_ClientSocket没有实例化,是一个空指针,所以会导致内存错误.
2.在你的工程中,g_ClientSocket变量完全没必要定义为全局变量,可以定义为类CChatClientDlg的成员变量,有利于维护(如指针实例化和释放).
3.类CSocketEx的头文件和类CChatClientDlg的头文件被循环引用.
4.CSocketEx类虽然出CSocket类派生,但仍然要进行端口绑定(我记得好像只有服务器端不需要),全部工程看不到绑定和连接的代码,只有发送和接收代码.(可能是我自己对该类不了解,因为我习惯使用SDK).
5.全局变量(即使是模块级变量),建议在文件开始处进行定义,以便于阅读.

一个简单的改动就可以避免你的错误提示,即在执行Send前对g_ClientSocket进行实例化就可以了,但还是得不到想要的结果.

以上所言,如无不妥,请谅解.
qq271991628 2008-03-15
  • 打赏
  • 举报
回复
Up by myself!
qq271991628 2008-03-15
  • 打赏
  • 举报
回复
sangermax ,g_ClientSocket = new CSocketEx(this); 中的this指针指向的是LoginDlg窗口,不是CChatClientDlg
不过你的这段代码,倒是给我声明窗口对象提了个醒。先谢过!

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧