以前没用过VS,因公司需要开发一个特殊功能的上位机串口收发工具,就着手开始研究了。新手来的,哪里写的有问题还望多多指教。
前期工作不多说,找了几款例程,把每一行的字符定义,特殊定义,基本都了解了一遍。花了1周左右,只是了解了个大概。决定依葫芦画瓢开干。
这里就主要列出遇到的比较头疼的几个问题:
问题1:
使用strncpy_s函数时候一直报错说不存在从CString转换成const char* 的操作
解决:
打开工程的属性配置页,在配置属性-常规-项目默认值-字符集—由于我是VS13版的,默认是使用Unicode字符集,改成使用多字节字符集,strncpy_s就可以正常使用了。—_—
问题2:
改成多字符集之后再打开我做的程序页面,我的天,好丑有木有,而且之前设置的下拉框拉不下来了,很焦灼,找了半天解决方法,才成功变回来了。
解决:
在你的工程里找到stdafx.h这个文件
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
将第一行的**#ifdef _UNICODE** 和最后一行 #endif注释掉就可以成功变回去了,而且我的下拉框也变正常了。
问题3:
问题解决我就继续运行,然后就开始报错,Building an MFC project for a non-Unicode character set is deprecated
,经过不懈研究发现还是因为改了字符集后发生的错误。要么改回去,要添加一个库支持文件vc_mbcsmfc.exe
解决:
安装一个库文件vc_mbcsmfc.exe再重启一下vs就可以了。
https://download.csdn.net/download/qq_40242348/12229217
别的问题下次再更了------