Я создал образец проекта C++ в Visual Studio 2010 со следующими файлами.Ошибка LNK2019 в Visual Studio 2010
Ах
#ifndef A_H
#define A_H
#include <iostream>
void foo();
#endif
a.cpp
#include "A.h"
void foo()
{
int a = 1;
}
main.cpp
#include "A.h"
int main(int argc, char* argv[])
{
foo();
return 0;
}
Я получаю следующий результат после сборки:
1> --- --- Начало сборки: Проект: opengl_test , Configuration: Debug Win32 ------
1> main.cpp
1> Ах
1> a.cpp
1> Создание кода ...
1> Debug \ A.obj: предупреждение LNK4042: объект, указанный более одного раза; дополнительные игнорировали
1> main.obj: ошибка LNK2019: неразрешенный внешний символ "недействительным __cdecl Foo (аннулируются)" (Foo @@ YAXXZ?) ссылка в функции _main
1> C: \ Users \ ALP \ Проекты \ Образцы тестов \ opengl_test \ Debug \ opengl_test.exe: фатальная ошибка LNK1120: 1 неразрешенные внешние данные
===================================== пропущено ==========
В чем причина этой ошибки?
Возможный дубликат [Visual Studio 2010 «странное предупреждение LNK4042»] (http://stackoverflow.com/questions/3695174/visual-studio-2010s-strange-warning-lnk4042) –
Для чего это стоит, я ** не может ** воспроизвести это в новом, пустом проекте в VS 2010. Я просто добавил ваши 3 файла кода ('Ah',' A.cpp' и 'main.cpp'), а затем скомпилирован. Работает нормально, никаких ошибок. Итак, вопрос в том, что отличается от вашей настройки, чем моя (и то, что вы описали в вопросе)? –
@CodyGray Я создал новое решение и добавил эти файлы в проект и теперь строит без каких-либо ошибок или предупреждений. Дело в том, что проект сначала ссылался на функции opengl/glut, и в какой-то момент визуальная студия начала давать мне эту ошибку LNK2019, и она не давала ее все время, как я описал здесь http://stackoverflow.com/questions/8996385/ c-unresolved-external-symbol-error-after-clean. Затем он начал давать его всегда. Поэтому я преобразовал проект в эту простую форму, и он продолжал давать ошибку. Я не знаю, что вызвало разницу в конфигурации между двумя проектами. –