Wahrscheinlich, weil TCHAR als ein Char in einem Ihrer Projekte definiert ist, aber nicht im VS2010, wo es wahrscheinlich wchar_t ist.
Wenn Ihr Projekt UNICODE/_UNICODE definiert, was der Angabe eines Unicode-Builds in den Projekteinstellungen entspricht, wird TCHARs wchar_t sein.
Sie müssen grundsätzlich entscheiden, ob Unicode verwendet werden soll oder nicht. Wenn Sie dies tun, müssen Sie die regulären Aufrufe von strncpy et al in die Whole-Char-Entsprechungen ändern oder die T-Varianten verwenden, die genauso wie TCHARs geändert werden machen. Sehen Sie sich die Hilfe für strncpy oder die anderen Funktionen an, um zu sehen, wie die Wide- oder T-Varianten aufgerufen werden.
Sie können MSDN auch für Aufrufe wie strcpy ansehen, wo Sie sehen können, dass die Wide-Char-Version Wcscpy und die T-Version _tcscpy aufgerufen wird. Ich würde Ihnen empfehlen, bei den t-Versionen zu bleiben, wenn Sie den Code in verschiedenen Projekten verwenden wollen, die entweder UNICODE verwenden oder nicht, oder um eine fundierte Entscheidung zu treffen, welche Sie verwenden werden, und dann dabei bleiben. Was besser ist, hängt von Ihrem Szenario ab, das ich sagen würde, und kann einige "religiöse" Meinungen hervorrufen ...
Dieser Beitrag hat mich gerade ein paar Stunden gerettet. Der Standard für neue C++ - Projekte ist die Verwendung des Unicode-Zeichensatzes. Wenn Sie das ausschalten, beheben Sie diese Fehler. –
Danke für den Link. wcslen arbeitete hier für einen LPCTSTR – rogerdpack