Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
#1

Ошибка LNK2005 - C++

04.03.2014, 21:46. Просмотров 1287. Ответов 8
Метки нет (Все метки)

Создал небольшой проект, чтобы разобраться в работе с C++. При компиляции выдает такую ошибку:
error LNK2005: "int * myFile_ptr" (?myFile_ptr@@3PAHA) уже определен в Core.obj
error LNK1169: обнаружен многократно определенный символ - один или более
Вот код проекта:

Core.h
C++
1
2
3
4
#pragma once
#include <iostream>
#include "MyFile.h"
using namespace std;
Core.cpp
C++
1
2
3
4
5
6
7
8
9
#include "Core.h"
 
int main(int argc, char* argv[])
{
    setlocale(LC_CTYPE, "rus");
    cout << "My fIle value is: " << getMyFile() << endl;
    system("pause");
    return 0;
}
MyFile.h
C++
1
2
3
4
5
6
7
#pragma once
#include <iostream>
using namespace std;
 
int *myInt_ptr = new int(5);
 
int getMyFile();
MyFile.cpp
C++
1
2
3
4
5
6
#include "MyFile.h"
 
int getMyFile()
{
    return *myInt_ptr;
}
Подскажите, в чем проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 21:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка LNK2005 (C++):

Ошибка LNK2005: многократное определение - C++
Написала вот такой код в VS 2013: /* файл table.h */ #define _CRT_SECURE_NO_WARNINGS #ifndef STRUCT_H #define STRUCT_H ...

Сборка многофайлового приложения: ошибка LNK2005 - C++
Привет! Помогите пожалуйста разобраться со организацией исходников. Структура такова: ColorButton.h в нем подключается Object.h и...

Ошибка 19 error LNK2005. Многофайловое приложение - C++
У меня возникает ошибка Ошибка 19 error LNK2005: &quot;void __cdecl set_0(double *,int)&quot; (?set_0@@YAXPANH@Z) уже определен в...

LNK2005 - C++
После долгой возни с cpp и их h решил сделать &quot;по тупому&quot; и скинуть все в stdafx.h, который все равно должен быть везде :&lt; Ага.. скинул.....

Error LNK2005 - C++
error LNK2005: &quot;struct SetErrors ErrorStruct&quot; (?ErrorStruct@@3USetErrors@@A) уже определен в LexerAnalyses.obj 1&gt;SyntaxAnalyzer.obj :...

error LNK2005 - C++
Ребят, выскакивает такая ошибка: 1&gt;test.obj : error LNK2005: &quot;char * * tip&quot; (?tip@@3PAPADA) already defined in real.obj 1&gt;real.obj :...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DrOffset
7092 / 4233 / 950
Регистрация: 30.01.2014
Сообщений: 7,008
05.03.2014, 00:36 #2
Читай с этого поста и до конца, не обращая внимания на спорщиков - они не разобрались в сути вопроса. У тебя ситуация такая же, только с переменной.
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
05.03.2014, 01:59  [ТС] #3
Спасибо, ключевое слово static помогло!
DrOffset
7092 / 4233 / 950
Регистрация: 30.01.2014
Сообщений: 7,008
05.03.2014, 09:16 #4
Nikkilla, еще можно оъявить переменную в каком из cpp,
C++
1
2
// cpp
int *myInt_ptr = new int(5);
а в h-файле использовать ее имя с extren
C++
1
2
//h
extern int *myInt_ptr;
тогда одна и та же переменная будет доступна в остальных cpp, куда включается этот h-файл.

Со static же будет по разной переменной в каждом из cpp.
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
06.03.2014, 02:45  [ТС] #5
Еще вот столкнулся с такой ошибкой:
Ошибка 1 error C2143: синтаксическая ошибка: отсутствие ";" перед "*" f:\мои проекты\c++\cpptest\cpptest\core.h 7 1 CppTest
Ошибка 2 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию f:\мои проекты\c++\cpptest\cpptest\core.h 7 1 CppTest
Код проекта:
Core.h
C++
1
2
3
4
5
6
7
#pragma once
#include <iostream>
#include "MyFile.h"
#include "MyClass.h"
using namespace std;
 
extern MyClass *myClass;
Core.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "Core.h"
 
MyClass *myClass = NULL;
 
int main(int argc, char* argv[])
{
    setlocale(LC_CTYPE, "rus");
 
    myClass = new MyClass();
    update();
 
    system("pause");
    return 0;
}
MyFile.h
C++
1
2
3
4
5
6
7
8
9
#pragma once
#include <iostream>
#include "Core.h"
using namespace std;
 
extern int *myInt_ptr;
 
int getMyFile();
void update();
MyFile.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "MyFile.h"
 
int *myInt_ptr = new int(5);
 
int getMyFile()
{
    return *myInt_ptr;
}
 
void update()
{
    myClass->showMessage();
}
MyClass.h
C++
1
2
3
4
5
6
7
8
9
10
#pragma once
#include <iostream>
#include "MyFile.h"
using namespace std;
 
class MyClass
{
public:
    void showMessage();
};
MyClass.cpp
C++
1
2
3
4
5
6
#include "MyClass.h"
 
void MyClass::showMessage()
{
    cout << "My fIle value is: " << getMyFile() << endl;
}
DrOffset
7092 / 4233 / 950
Регистрация: 30.01.2014
Сообщений: 7,008
06.03.2014, 12:18 #6
Циклическое включение заголовочных файлов. Нужно где-то разорвать его. Еще почитай про предварительное объявление.
Core.h
C++
1
2
3
4
5
6
7
#pragma once
#include <iostream>
//#include "MyFile.h"
#include "MyClass.h"
using namespace std;
 
extern MyClass *myClass;
MyFile.h
C++
1
2
3
4
5
6
7
8
9
#pragma once
#include <iostream>
//#include "Core.h"
using namespace std;
 
extern int *myInt_ptr;
 
int getMyFile();
void update();
MyFile.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "MyFile.h"
#include "Core.h"
 
int *myInt_ptr = new int(5);
 
int getMyFile()
{
    return *myInt_ptr;
}
 
void update()
{
    myClass->showMessage();
}
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
06.03.2014, 15:47  [ТС] #7
Ага, спасибо. Разобрался.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
06.03.2014, 15:57 #8
Цитата Сообщение от Nikkilla Посмотреть сообщение
ключевое слово static помогло!
а ты знаешь что оно означает?
DrOffset
7092 / 4233 / 950
Регистрация: 30.01.2014
Сообщений: 7,008
06.03.2014, 19:43 #9
Цитата Сообщение от ValeryS Посмотреть сообщение
а ты знаешь что оно означает?
Я его уже направил по более правильному пути
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2014, 19:43
Привет! Вот еще темы с ответами:

error LNK2005 - C++
День Добрый! Прошу помочь с проблемой, 5-й день не могу ее решить %-) 1&gt;gun.obj : error LNK2005: &quot;class Block * tank&quot;...

Ошибки линковки LNK2005, LNK1169 - C++
Как-то пробовал сделать программу из нескольких модулей, но наткнувшись на какие-то непонятные ошибки забросил это дело... Решив же...

Объясните доступно и просто возможные причины возникновения ошибки линковщика - LNK2005 - C++
Объясните доступно и просто возможные причины возникновения ошибки линковщика - LNK2005.

Компиляция выдает ошибку "error LNK2005: _main уже определен в int.obj" - C++
Добрый день уважаемые. Столкнулся с данной проблемой. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.03.2014, 19:43
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru