Проблема в том, что код был плохо написан. Разработчик сделал предположения о символах и целочисленных типах, которые не сохраняются при компиляции в Unicode. Проблема не в Visual C ++, ATL или Visual Studio.
Очевидно, что есть переключатель компилятора, который вы можете использовать для его компиляции, так как это, по-видимому, основное отличие между версиями Debug и Unicode Release Mindependency. Однако вы не хотите переключать его, поскольку это будет означать, что вы больше не выполняете фактическую сборку Mindependency выпуска Unicode.
Вы заметите, что каждое из ваших конверсионных сообщений находится между unsigned short *
(указатель на определенный тип целого числа) и некоторым представлением строки. В правильно написанном C ++ вы не конвертируете между целочисленными и символьными типами повсюду. Это может быть необходимо, например, при работе с унаследованным кодом, но это является источником потенциальных проблем и требует внимательного наблюдения.
Вам нужно переписать этот код. Вы сказали, что разработчик не был рядом (возможно, уволен за то, чтобы делать подобные вещи), поэтому вам нужно будет найти другого разработчика, чтобы это исправить.