2015-01-02 3 views
-5

Я получаю 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 
+3

У вас есть MCVE? http://stackoverflow.com/help/mcve – inetknght

+1

@inetknght Я попробую собрать его вместе. – developerbmw

+5

У меня нет downvoted (пока :)), но как это разумный вопрос? Вы не предоставили нам никакой полезной информации. Гигантское дерево исходных файлов и заголовков, которые они включают, не полезно, потому что 1. у нас нет способа узнать, правильно ли это 2. Нет ничего, чтобы указать, даже если вы даже указали определение рассматриваемого конструктора. – Praetorian

ответ

0

После попытки создать MCVE как это было предложено @inetknght (спасибо BTW), я обнаружил, что это было на самом деле ошибка в Visual Studio Express 2013. Я скопировал все мои исходные файлы новый проект, поэтому я мог бы убрать материал, чтобы получить наименьший пример, однако он скомпилирован в новом проекте.

При попытке исправить исходный проект я очистил решение, вручную удалил объектные файлы, удалил .sdf-файл в проекте. Ничего из этого не сработало. Затем я попытался удалить файл TestLanguage.cpp из проекта и добавить его обратно - и он сработал.

Надеюсь, это поможет любому, кто испытает это.

+1

Похоже, что исходный файл был исключен из сборки. –

+1

Похоже, что у вас есть маленький-иш-последовательный репродуктор под рукой. Как сообщить об этом при подключении и провести MS? Пока вы это сделаете, вы не можете быть уверены, что это действительно ошибка VS. –

Смежные вопросы