Неразрешенная ссылка на конструктор, который определен
Я получаю unresolved external symbol "public: __thiscall TestLanguage::TestLanguage(void)" ([email protected]@[email protected]) referenced in function _main
Конструктор TestLanguage
определяется, насколько я могу видеть, однако, очевидно, компилятор его не видит. Мой единственный вывод заключается в том, что существуют какие-то проблемы включения (например, циркуляр включает).
Я сделал диаграмму включений для каждой единицы перевода ниже, однако я не вижу никаких проблем. Любые рекомендации будут оценены.
Включает:
Test.cpp
Expression.h
Operation.h
Token.h
CPU.h
Operation.h
TestLanguage.h
ILanguage.h
TLOperators.h
IOperator.h
Operation.h
Token.h
TestLanguage.cpp
TestLanguage.h
ILanguage.h
TLOperators.h
IOperator.h
Operation.h
Token.h
TLOperators.cpp
TLOperators.h
IOperator.h
Operation.h
Token.h
Expression.h
Operation.h
Token.h
CPU.h
Operation.h
CPU.cpp
CPU.h
Operation.h
Operation.h
Expression.cpp
Expression.h
Operation.h
Token.h
Util.h
IOperator.h
Operation.h
Token.h
CPU.h
Operation.h
ILanguage.h
Operation.cpp
Operation.h
Token.cpp
Token.h
Ответы
Ответ 1
После попытки создать MCVE, как было предложено @inetknght (спасибо BTW), я обнаружил, что на самом деле это была ошибка в Visual Studio Express 2013. я скопировал все мои исходные файлы в новый проект, поэтому я мог бы удалить материал, чтобы получить наименьший пример, однако он скомпилирован в новом проекте.
При попытке исправить исходный проект я очистил решение, вручную удалил объектные файлы, удалил .sdf файл в проекте. Ничего из этого не сработало. Затем я попытался удалить файл TestLanguage.cpp из проекта и добавить его обратно - и он сработал.
Надеюсь, это поможет любому, кто переживает это.