写了一个函数如下
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 也是同样的错误。大家帮帮忙!!!

解决方案 »

  1.   

    shi2_netname和shi2_re是什么类型?
      

  2.   

    SHARE_INFO_2把这个结构体类型给出来。
      

  3.   

    LPSTR 是字符指针
    tchar 这个是字符大哥两种不同的东西,你要干吗?
    你这个LPSTR分配空间了没?分配了多大?
    如果分配了
    LPSTR lpFoo = (char*)malloc(100*sizeof(char));
    *lpFoo = 'a';
    这么简单你不会不知道吧?
      

  4.   

    vs2005工程,默认使用 unicode字符集。这样TCHAR就是宽字符三种方法:
    1)利用T2A转换
    USES_CONVERSION;
    p.shi2_netname=T2A(sharename); 2)工程属性,改为使用 多字符集3)不用TCHAR,直接用char。 不用_T
      

  5.   

    typedef struct _SHARE_INFO_2 
    {  
    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,
      

  6.   


    结构里都是宽字符串,你却要把传进来的参数强转为ANSI字符串,这肯定是要出错的
    typedef char CHAR;
    typedef CHAR *LPSTR;
      

  7.   

    用第一个方法,传出来的是个乱码p.shi2_netname
    第二个方法编译不通过,出现很多error C2664: 'wcscmp' : cannot convert parameter 1 from 'TCHAR *' to 'const wchar_t *'类似的错误
      

  8.   

    主函数是这样的
    int _tmain(int argc, TCHAR* argv[])
    {
    if(Add(argv[1]))
    return 0;
    else 
    return 1;
    }
      

  9.   

    你是用release版调试查看的吧?release版调试显示的信息经常是错的,把数据显示出来看。
      

  10.   

    改成p.shi2_netname=(LPTSTR)sharename;后编译错误
    error C2440: '=' : cannot convert from 'LPTSTR' to 'LPSTR'
      

  11.   

    'TCHAR *' to 'const wchar_t *'
    //你的工程是多字节版本?能否改为unicode工程?
    //或者用MultiByteToWideChar将sharename转为unicode字符
      

  12.   

    既然结构里是宽字符串那就应该转成宽字符两种方法
    1)利用T2W转换
    USES_CONVERSION;
    p.shi2_netname=T2W(sharename);2)工程属性,改为使用 UNICODE
      

  13.   

    p.shi2_netname=T2W(sharename);
    编译错误 error C2440: '=' : cannot convert from 'LPWSTR' to 'LPSTR'