注意事项—安装:
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
-
问题出在程序语句(见下):
其中,字符串p1和p2分别指向某个字符串,p是定义的一个字符数组。问题出现在对strlen()的使用,这个函数计算的字符串长度是不包括'\0’的,所以在设置第二个参数(缓冲区长度)时,就会出现异常,因为在拷贝时需要将字符串的结束标志也要一同拷贝过去,所以,上面提示Buffer is too small就表明第二个参数设置的值小于源字符串。所以解决方法就是:将strlen(p1)修改为strlen(p1)+1,如下图,修改后调试通过。
- 没有与参数列表匹配的重载函数,可选择不同的字符集试试(项目-属性-配置属性)
- error C2664: “wcscpy”: 不能将参数 1 从“LPSTR”转换为“wchar_t *”
-
用strcpy替换wcscpy,即strcpy(pTVTipInfo->pszText,strText); 因为strcpy是ansi字符集下的函数,而wcscpy是unicode字符集下的拷贝函数。