//#ifndef UNICODE
//#define UNICODE
//#endif
#include <stdio.h>
#include <assert.h>
#include <windows.h> 
#include <lm.h>
#include <TCHAR.h>
#include <winnetwk.h> 
#pragma comment(lib,"mpr") int main(int argc, wchar_t* argv[]) 

 NETRESOURCE nr;   
 DWORD   res; 
 TCHAR server[100]="\\\\192.168.1.55\\ipc$"; 
 nr.dwType=RESOURCETYPE_ANY;   
    nr.lpLocalName=NULL; 
    nr.lpRemoteName=server;   
    nr.lpProvider=NULL;   
WNetAddConnection2(&nr,_T(""),_T(""),0);
return 0;
}
上面是我写的一个建立空连接的程序,如果注释过unicode则可以正常编译,否则就报cannot convert char to unsigned short错误,知道原因的高手说一下下,顺便把char到unsigned 的互换方法写写,谢咯

解决方案 »

  1.   


    将ANSI转换到Unicode 
    (1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&clsid); 
    (2)通过MultiByteToWideChar函数实现转换,例如: 
    char *szProgID = "MAPI.Folder"; 
    WCHAR szWideProgID[128]; 
    CLSID clsid; 
    long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof (szWideProgID)); 
    szWideProgID[lLen] = ''\0''; 
    (3)通过A2W宏来实现,例如: 
    USES_CONVERSION; 
    CLSIDFromProgID( A2W(szProgID),&clsid); 将Unicode转换到ANSI 
    (1)使用WideCharToMultiByte,例如: 
    // 假设已经有了一个Unicode 串 wszSomeString... 
    char szANSIString [MAX_PATH]; 
    WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL ); 
    (2)使用W2A宏来实现,例如: 
    USES_CONVERSION; 
    pTemp=W2A(wszSomeString);