Неразрешенная ссылка на конструктор, который определен
Я получаю unresolved external symbol "public: __thiscall TestLanguage::TestLanguage(void)" (??0TestLanguage@@QAE@XZ) 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 из проекта и добавить его обратно - и это сработало.
Надеюсь, это поможет всем, кто испытает это.