1

最初にコードがコンパイルされ、VS2010 で実行されます

しかし、cl.exeでコンパイルすると、

cannot convert parameter 1 from 'WCHAR [10]' to 'LPCTSTR'

コードは

char *fileName = "12.txt";
WCHAR ufileName[10];
MultiByteToWideChar(CP_ACP, MB_COMPOSITE, fileName, -1, ufileName, 10);

postFile(ufileName, clientSock);
postFile(LPCTSTR lpFileName, SOCKET clientSock)
4

1 に答える 1

5

WCHARを期待する関数に配列を渡そうとしていますLPCTSTRこの記事LPCTSTRでは、が の配列であり、Unicode ビルドと非 Unicode ビルドでサイズTCHARが異なることについて説明します。TCHAR

コードは に依存してsizeof(TCHAR) == sizeof(WCHAR)いるため、Unicode サポートを有効にする必要があります。

IDE 内からのビルドではユニコードが有効になっていますが、コマンド ライン ビルドでは有効になっていないと思います。-DUNICODE -D_UNICODEコマンドラインに追加することで、Unicode サポートを有効にすることができます。

于 2012-12-28T13:53:50.370 に答える