写了一个函数如下
BOOL Add(TCHAR *sharename)
{
NET_API_STATUS res;
SHARE_INFO_2 p;
DWORD parm_err=0;
p.shi2_netname=(LPSTR)sharename;
p.shi2_type = STYPE_SPECIAL;
p.shi2_re = (LPSTR)_T("abc");
p.shi2_permissions=0;
................
}其中,执行p.shi2_netname=(LPSTR)sharename之后, p.shi2_netname值是《bad ptr》CXX0030: Error: expression cannot be evaluated
p.shi2_re 也是同样的错误。大家帮帮忙!!!
BOOL Add(TCHAR *sharename)
{
NET_API_STATUS res;
SHARE_INFO_2 p;
DWORD parm_err=0;
p.shi2_netname=(LPSTR)sharename;
p.shi2_type = STYPE_SPECIAL;
p.shi2_re = (LPSTR)_T("abc");
p.shi2_permissions=0;
................
}其中,执行p.shi2_netname=(LPSTR)sharename之后, p.shi2_netname值是《bad ptr》CXX0030: Error: expression cannot be evaluated
p.shi2_re 也是同样的错误。大家帮帮忙!!!
解决方案 »
- 有没有协议设计相关的rfc或者权威文档!
- vc++文件内容读入变量问题
- 使用API异步串口通信 为什么每次都只能收到8个字节
- 为什么通过InternetSetOption设置的超时属性不能生效呢?
- 救命啊...给100分:关于不能查询com接口的问题
- socket问题两个
- ◆◆◆◆请数学和英语好的大侠进来帮帮忙◆◆◆◆
- 那位知道如何仅用api把一个窗口做得和MessageBox一样? 谢谢!!
- 如何从ip address得到机器名?
- pak文件是干什么的?怎么打开呢
- 用WebBrowser控件打开PowerPoint后, 怎么让它翻页(自己设定的,比如一秒或多少时间一页)
- 怎么实现打印即打即停
tchar 这个是字符大哥两种不同的东西,你要干吗?
你这个LPSTR分配空间了没?分配了多大?
如果分配了
LPSTR lpFoo = (char*)malloc(100*sizeof(char));
*lpFoo = 'a';
这么简单你不会不知道吧?
1)利用T2A转换
USES_CONVERSION;
p.shi2_netname=T2A(sharename); 2)工程属性,改为使用 多字符集3)不用TCHAR,直接用char。 不用_T
{
LPWSTR shi2_netname;
DWORD shi2_type;
LPWSTR shi2_re;
DWORD shi2_permissions;
DWORD shi2_max_uses;
DWORD shi2_current_uses;
LPWSTR shi2_path;
LPWSTR shi2_passwd;
} SHARE_INFO_2,
结构里都是宽字符串,你却要把传进来的参数强转为ANSI字符串,这肯定是要出错的
typedef char CHAR;
typedef CHAR *LPSTR;
第二个方法编译不通过,出现很多error C2664: 'wcscmp' : cannot convert parameter 1 from 'TCHAR *' to 'const wchar_t *'类似的错误
int _tmain(int argc, TCHAR* argv[])
{
if(Add(argv[1]))
return 0;
else
return 1;
}
error C2440: '=' : cannot convert from 'LPTSTR' to 'LPSTR'
//你的工程是多字节版本?能否改为unicode工程?
//或者用MultiByteToWideChar将sharename转为unicode字符
1)利用T2W转换
USES_CONVERSION;
p.shi2_netname=T2W(sharename);2)工程属性,改为使用 UNICODE
编译错误 error C2440: '=' : cannot convert from 'LPWSTR' to 'LPSTR'