2013-07-12 2 views
0

У меня здесь странная проблема. У меня есть весь проект VS2012, который работает правильно. Но когда я попробовал простую задачу добавления метода к одному из моих классов, он не будет связывать правильно, я получаюVisual Studio 2012 Ошибка связи

error LNK2019: unresolved external symbol "public: void __thiscall Camera::calcularDirecao(class GLFWwindow *)" ([email protected]@@[email protected]@@Z)

Вот мой класс камеры:

class Camera { 
public: 
    Camera() { ... inline constructor ... } 
    ~Camera() {} 

    ... other methods (which link fine) ... 

    void calcularDirecao(GLFWwindow *); 
}; 

И в моем файл реализации у меня есть

void Camera::calcularDirecao(GLFWwindow *janela) { 
    ... code ... 
} 

    ... other methods ... 

Я уже пробовал перестраивать и все, без успеха. Заранее спасибо.

+3

Просто (глупое) предложение: В ситуациях, подобных этому, когда компилятор/компоновщик, кажется, игнорирует мой код, я пытаюсь добавить в свой код некоторую * ерунду *, чтобы узнать, не получается ли я получить компиляцию или нет! Например, вы можете просто положить 'lkdhgre' в тело вашего метода' calcularDirecao' и посмотреть, жалуется ли компилятор. Если это не так, это означает, что по какой-либо причине он не видит тело метода (неправильный файл, макросы препроцессора и т. Д.) – yzt

+0

@yzt Да, я получаю ошибку компиляции при добавлении мусора в метод –

+0

OK, d попробуйте изменить имя метода, добавив другие методы (с реализациями в файле CPP), чтобы увидеть, будут ли они иметь одну и ту же проблему, перемещая реализацию проблемного метода inline, перемещая его в другой файл CPP и т. д. (конечно это все шаги в диагностике, а не решения.) – yzt

ответ

2

Восстановите свой проект с нуля, проверьте, работает оно или нет. После этого сравните файлы vcxproj. Это текстовые файлы. Любой инструмент сравнения текста будет работать. Их разница может многое сказать.

Также попробуйте просмотреть исходный файл в шестнадцатеричном редакторе. Ищите любые символы без ASCII в вашем проблемном методе и вокруг. Такие символы могут не отображаться в средстве просмотра IDE, но все же могут запутать компилятор.

0

Я сомневаюсь, что ваше определение GLFWwindow становится переопределенным другим файлом, включенным в ваш .cpp.

+0

Чтобы проверить это, включите все файлы в .h и посмотрите, будет ли он теперь создавать. –

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