С++ ошибка внешнего неразрешенного символа LNK2001

У меня есть что-то вроде этого:

--includes.h
extern int count;

--main.cpp
#include "includes.h"
int count = 4;

--other.cpp
#include "includes.h"
cout<<count; // will output 4

но когда я это сделал, компилятор выдал следующее сообщение:

error LNK2001: unresolved external symbol "int count" (?count@@3HA)

Любая идея, почему я получаю это?

Каков наилучший способ совместного использования переменных в разных файлах? Как я могу определить использование переменной в одном файле и изменить эту же переменную в другом файле?


person Rudy01    schedule 09.08.2014    source источник
comment
Использование функций и заголовков.   -  person Qix - MONICA WAS MISTREATED    schedule 10.08.2014
comment
Вы связались с соответствующим объектным файлом? Возможно нет.   -  person chris    schedule 10.08.2014
comment
Оба файла .cpp находятся в одном проекте, правильно?   -  person WhozCraig    schedule 10.08.2014
comment
да они в одном проекте   -  person Rudy01    schedule 10.08.2014
comment
Пожалуйста, покажите, как вы вызываете компоновщик.   -  person CB Bailey    schedule 10.08.2014


Ответы (3)


main.cpp

#include <iostream>
int y; 
int testy();
int _tmain(int argc, _TCHAR* argv[])
{

     std::cout << y;
     std::cout<<testy();
     std::cout << y;
    return 0;
}

источник.cpp

extern int y;

int testy(){return y++;}

Это должно помочь понять вашу проблему...

person Samer    schedule 09.08.2014

Вы можете попробовать вставить в безымянное пространство имен

namespace{
    extern int count = -1;
};

цена за тысячу показов:

std::cout << count;
person Quest    schedule 09.08.2014
comment
Я просто устал, но получаю аналогичную ошибку: неразрешенный внешний символ int anonymous namepsace::count - person Rudy01; 10.08.2014

Вы должны определить extern int в заголовке и int в одном файле, но этот файл должен быть без какой-либо ссылки на заголовок

person Adrián Arroyo Calle    schedule 09.08.2014
comment
Включение объявляющего заголовка в определяющий файл .cpp не проблема, даже с extern decl. - person WhozCraig; 10.08.2014