【第22期】观点:IT 行业加班,到底有没有价值?

MFC-局域网聊天工具bug集锦

原创 2015年11月21日 13:28:51

基于socket_src目录下的lantalker的编译问题及解决(这跟下面的问题无关,只是方便博主记忆)

程序名称:talker3

工具:VS2013


1.cannot convert from const char a[6] to CString
本来的代码是:CString str = "recv-";
解决:改成 CString str = _T("recv-");就行了

2.cannot convert argument 2 from 'wchar_t*' to 'const char*'
解决:设置项目属性->配置属性->常规->修改unicode为多字符集

注:关于字符的错误还有一种可能的就是:#include<tchar.h>

3.用VS2013编译VS6写的程序时出现:building an mfc project for anon-unicode character set is deprecated.
原因:用于多字节字符编码 (MBCS) 的 MFC 库 (DLL) 不再包含于 Visual Studio 中,但是可用作插件
解决:下载mfc安装就行了

4.‘gethostbyname’: Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
   还有'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
解决:#define _WINSOCK_DEPRECATED_NO_WARNINGS还是没有用
最终方案:设置项目属性->C/C++ ->常规->SDL设为No

5.编译成功以后运行程序:“创建套接字错误”
原因:talker3.cpp中的InitInstance()函数里没有初始化套接字环境,复制代码用AfxSocketInit()函数初始化

6.解决了问题5之后编译出现:identifier "AfxSocketInit" is undefined
解决:#include "Afxsock.h"

这样创建套接字就成功了,但是绑定地址有错误,明天解决。但是对话框已经能加载了

7.绑定地址错误是因为之前就已经把3456号端口绑定过了,还没有正常关闭,所以失败
换一个端口号就行了

8.解决了上面的问题后成功运行了程序,却出现问题:
创建套接字和绑定地址都没问题,但是一按发送键对话框就自己退出了,查看端口也发现刚绑定好的端口没了
原因:使用的默认的“确认”控件,所以在响应函数里会自动生成代码:

void Ctalker3Dlg::OnBnClickedOk()
{
	// TODO: Add your control notification handler code here
	CDialogEx::OnOK();//把这一句注释就行了,原因自己想
	//这下面是我自己写的响应代码
}

9.error LNK2001: unresolved external symbol "protected: long __thiscall Ctalker3Dlg::OnTrayNotification(unsigned int,long)
原因:OnTrayNotification(unsigned int,long)函数只声明了但是没有定义
解决:在.cpp文件中加上函数的实现就行了,如:
LRESULT Ctalker3Dlg::OnTrayNotification(WPARAM uID, LPARAM lEvent)		
{
	return m_trayIcon.OnTrayNotification(uID, lEvent);
}

10.error rc2135:file not found:0
这个错误一般就是.rc文件有问题了,要不就是不小心修改了什么东西,要不就是用notepad++修改后保存,但是字符集有问题不是unicode
解决:这个问题我还没解决,试着用记事本打开这个文件,然后另存为unicode重编译还是不行

11.C1189: #error :  Please use the /MD switch for _AFXDLL builds
描述:我用debug版本编译后在没有装vs的电脑上运行不了,后改为release版本还是不行。
现在想在release版本下用静态编译,我是这么设置的:
项目属性->C/C++->代码生成->运行库选择“多线程/MT”,编译出现上面的错误
解决:项目属性->配置属性->general->use of mfc选择use mfc in static library



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

基于UDP广播的局域网聊天工具

 最近项目在做一个基于UDP模式的通信程序,考虑到项目的需求有一对多的需要,所以采用socket UDP广播模式进行数据通信。网上了解了一下知道这种模式也是目前QQ采用的方式,于是为了更...

CentOS 6.9 安装IPtux局域网聊天工具

CentOS 6.9 安装IPtux局域网聊天工具

欢迎关注CSDN程序人生公众号

关注程序员生活,汇聚开发轶事。

局域网聊天工具

   先看效果  

局域网聊天工具

作为一款传统的局域网聊天软件,飞鸽传书经历了漫长的发展,现在已经逐渐发展成为成熟型即时通讯软件,不管是在那个行业里的运用,它都能发挥其卓越的通讯功能,为企业带来了不可估计的成本节约,其中最突出的当然是...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)