VS 2017 新手使用注册事项

注意事项—安装:

1.安装时选择“使用C++的桌面“开发;

2.从低版本尤其是VC 6.0转过来的工程有很多语法上的错误,按照提示或百度基本可以解决

3.链接外部文件出错,分三步可以解决(引用):    
1)、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。

2)、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。
3)、  然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名

  • 在使用LPCTSTR定议字符串时,总的提示错误。“const char*”类型不能用于初始化“LPCTSTR”类型的实体。

解决方法:转到定义,并进行如下修改。

 

另一种方法也是可以的,原因都是一样的:

原因:

可能是VS 2017中没有定义LPCSTR,而我的程序中的LPCTSTR----是由LPCSTR定义的,
VS 2017中也存在LPCTSTR,但在winnt.h中显示是由LPCWSTR定义的。

解决方法是增加了对LPCSTR的定义,并将LPCTSTR作为它的别名。

总之,就是重新定义char * 为LPCSTR

  • VS 2017在主文件中引用其它文件的内容(函数)

如下图,想在ConsoleApplication1.cpp(主函数main()据在文件)中调用Aci文件内的函数connetToServer和disconnectFromServer;

这时需要在ConsoleApplication1.cpp中开始位置写上如下两句即可,

extern BOOL connectToServer(LPCTSTR serverName, LPCTSTR ip, LPCTSTR userName, LPCTSTR password);  务器

extern BOOL disconnectFromServer(LPCTSTR serverName); 

  •  提示Buffer is too small
  • 问题出在程序语句(见下):

    3

    其中,字符串p1和p2分别指向某个字符串,p是定义的一个字符数组。问题出现在对strlen()的使用,这个函数计算的字符串长度是不包括'\0’的,所以在设置第二个参数(缓冲区长度)时,就会出现异常,因为在拷贝时需要将字符串的结束标志也要一同拷贝过去,所以,上面提示Buffer is too small就表明第二个参数设置的值小于源字符串。所以解决方法就是:将strlen(p1)修改为strlen(p1)+1,如下图,修改后调试通过。

    4

  •  没有与参数列表匹配的重载函数,可选择不同的字符集试试(项目-属性-配置属性)

  • error C2664: “wcscpy”: 不能将参数 1 从“LPSTR”转换为“wchar_t *” 
  • 用strcpy替换wcscpy,即strcpy(pTVTipInfo->pszText,strText);
    
    因为strcpy是ansi字符集下的函数,而wcscpy是unicode字符集下的拷贝函数。

猜你喜欢

转载自blog.csdn.net/dyz_123456/article/details/86087342