字符类型问题C2440,C2664

来源:互联网 发布:java中的private 编辑:程序博客网 时间:2024/06/16 00:01

源码链接:http://blog.csdn.net/u010499449/article/details/56671118

网上找了一个关于Windows服务的例子,用VS2015编译出现如下两个报错

错误地方:entrytable[0].lpServiceName = "testservice";

错误代码:Error    C2440    '=': cannot convert from 'const char [12]' to 'LPWSTR'

错误地方:hstatus = ::RegisterServiceCtrlHandler("testservice", CtrlHandler);

错误代码:Error    C2664    'SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(LPCWSTR,LPHANDLER_FUNCTION)': cannot convert argument 1 from 'const char [12]' to 'LPCWSTR'


解决方法:首先是把项目属性-->General-->Character Set 改为Not set,就是改为不用Unicode, 按照我的理解,这个设置应该可以解决,但是实际没解决。

方法二:在字符串前加_TEXT(),可百度它的含义,大致是解决字符集切换问题。


修改后可编译通过

hstatus = ::RegisterServiceCtrlHandler(_TEXT("testservice"), CtrlHandler);

entrytable[0].lpServiceName = _TEXT("testservice");

阅读全文
0 0
原创粉丝点击