Возможно, потому что TCHAR определен как char в одном из ваших проектов, но не в VS2010, где он, вероятно, wchar_t.
Если ваш проект определяет UNICODE / _UNICODE, что аналогично указанию его в качестве сборки Unicode в настройках проекта, TCHAR будет иметь значение wchar_t.
В основном вам нужно решить, использовать ли Юникод или нет, и если вы это сделаете, вам нужно изменить обычные вызовы strncpy и др. На эквиваленты с широким символом или использовать t-варианты, которые меняются так же, как и TCHAR , Посмотрите на справку для strncpy или других функций, чтобы увидеть, как называются широкие или t-варианты.
Вы также можете посмотреть в MSDN вызовы, такие как strcpy , где вы можете увидеть, что версия с широким символом называется wcscpy, а версия t называется _tcscpy. Я бы порекомендовал вам придерживаться t-версий, если вы собираетесь использовать код в разных проектах, которые используют UNICODE или нет, или принять информированное решение о том, какой из них вы собираетесь использовать, а затем придерживаться этого. Что лучше, зависит от вашего сценария, я бы сказал, и может ссылаться на некоторые "религиозные" мнения ...