Unresolved external VS блуждание в 2-х соснах

Версии одного и того же файла в разных директориях

Очень неприятная ошибка. Обобенно когда не понятно в чем дело. А дело может быть вот в чем.

При включении новой версии файла (например example.cpp) кладем его в новую директорию

Если мы забудем сделать так, чтобы заголовочный файл example.h читалься бы тоже от этой версии

(А так бывает если например в соседнем каталоге лежит старая версия или ее туда подложил CVS)

, то компилятор подобрав старый заголовочный файл создаст неправильные пакованные имена функций в вызывающем модуле. Отметим, что несогласованность возникнет из-за того, что example.cpp скорее всего подцепить свой заголовок, а не указанный в пути

Пример:

Show@CExample@@QAEJXZ в example.obj, но  Show@CExample@@QAEHXZ в main.obj

Решается все просто. Проверяется наличие двух заголовочных файлов example.h в разных директориях. Лишний файл стирается. Если же он не лишний то в настройках проекта указывается правильный путь.