0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 42

fatal error LNK1169: one or more multiply defined symbols found

21.05.2012, 13:01. Показов 4442. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем, тема в следующем. Пишу прогу а-ля картотека (2 курс, классический курсовой по C++). Столкнулся вот со следующей ошибкой:
error LNK2005: "class Song * mas" (?mas@@$$Q3PAVSong@@A) already defined in Audio.obj

В чём суть. У меня есть файл Form1.h, в котором прописан код на создание и управление формой (она одна у меня), а также файл Tags.h - там лежит класс Song. Т. к. функций с объектами класса должно быть достаточно много, необходимо прописывать их тело в отдельном файле со ссылкой на заголовочный (хороший стиль программирования, меньше претензий от препода и т. д.). И вот с этим проблема.

Вот объявления в файле Form1.h:
C++
1
2
#include "Tags.h"
#include "stdafx.h"
Вот объявления в файле Tags.h:
C++
1
#include "stdafx.h"
Вот объявления в файле Search.cpp (один из файлов, в котором будет лежать код для функций класса):
C++
1
2
#include "stdafx.h"
#include "Tags.h"
(также пытался вместо #include "Tags.h" писать #include "Form1.h" - то же самое)

При компиляции вылетает вышеуказанная ошибка. Честно, уже скоро руки опущу. Помогите, плиз, как от неё избавиться.

Добавлено через 4 минуты
Немного кода:

Что возникает при загрузке формы...
C++
1
2
3
4
5
6
7
8
System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e)
        {
            count = 1;
            mode = 0;
            q = 0;
            mas = new Song[9999];
            this->Size = System::Drawing::Size(764, 325);
        }
Как я вызываю функцию, лежащую в Search...
C++
1
2
3
4
5
6
7
8
9
10
11
12
System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)  // поиск
    {
        char *c = new char[2];
        c[0] = '1';
        c[1] = '2';
        int s = 0;
 
        s = mas->Search(c,s,q);
        if (s == 1)
            MessageBox::Show("!","!",
                MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
    }
Сама функция...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int Song::Search( char *c, int s, int q )
{
    int n = 0;
 
    for ( s; s < q; s++ )
        if ( strlen (mas[s].song) != strlen (c) )
            return 0;
        else
            for ( int j = 0; j < strlen (c); j++ )
                if ( mas[s].song[j] != c[j] )
                    return 0;
            else return s;
}
Класс...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Song: public Performer    // "Песня" наследуется от "Исполнителя"
{
public:
    char *song;     // название песни
    char *desc;     // описание
    char *year;     // год записи (минимальное значение - 1950)
    char rate;      // рейтинг (1...5)
 
    Song(int P = 0, int D = 0, int S = 0, int Y = 0)
    {
        perf = new char[P];
        desc = new char[D];
        song = new char[S];
        year = new char[Y];
    }
 
    ~Song() {}
 
    int Search( char *c, int s, int q );
 
 
} *mas;
Добавлено через 49 секунд
И вот оно:
1>Linking...
1>Search.obj : error LNK2005: "class Song * mas" (?mas@@$$Q3PAVSong@@A) already defined in Audio.obj
1>C:\Users\Prince\Documents\Visual Studio 2008\Projects\Audio\Debug\Audio.exe : fatal error LNK1169: one or more multiply defined symbols found
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2012, 13:01
Ответы с готовыми решениями:

fatal error LNK1169: one or more multiply defined symbols found
Среда Visual Studio 2008, приложение CLR-&gt;Windows Form Application. Вот имеется форма: #pragma once #include &lt;windows.h&gt; ...

Ошибки LNK2005-LNK1169: already defined
Люди добрые помогите в фиксе, не пойму в чем дело, срочно очень нужно вот код формы: static int nomer = 0; int Result = 0;...

fatal error LNK1169: one or more multiply defined symbols found
Доброго всем времени суток! Никак не могу разобраться в чём дело... Помогите пожалуйста! stdafx.h #pragma once #include...

7
 Аватар для MegaMozg
45 / 45 / 3
Регистрация: 19.12.2008
Сообщений: 110
21.05.2012, 13:02
а покажите ка файлы Tags.h и Audio.cpp
0
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 42
21.05.2012, 13:08  [ТС]
Tags.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "stdafx.h"
 
class Performer     // "Исполнитель" - базовый класс
{
public:
    char *perf; // название исполнителя
 
    Performer()     {}
    ~Performer()    {}
};
 
 
class Song: public Performer    // "Песня" наследуется от "Исполнителя"
{
public:
    char *song;     // название песни
    char *desc;     // описание
    char *year;     // год записи (минимальное значение - 1950)
    char rate;      // рейтинг (1...5)
 
    Song(int P = 0, int D = 0, int S = 0, int Y = 0)
    {
        perf = new char[P];
        desc = new char[D];
        song = new char[S];
        year = new char[Y];
    }
 
    ~Song() {}
 
int Search( char *c, int s, int q );
 
 
} *mas;
Audio.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Audio.cpp : main project file.
 
#include "stdafx.h"
#include "Form1.h"
 
using namespace Audio;
 
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 
 
    // Create the main window and run it
    Application::Run(gcnew Form1());
    return 0;
}
0
 Аватар для MegaMozg
45 / 45 / 3
Регистрация: 19.12.2008
Сообщений: 110
21.05.2012, 13:12
C++
1
2
3
4
class Song: public Performer    // "Песня" наследуется от "Исполнителя"
{
// ... 
} *mas;
Вот этот *mas в конце смущает. Для чего это? Уберите его и объявите указатель где он будет использоваться.
0
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 42
21.05.2012, 13:16  [ТС]
Он используется вот где:
C++
1
2
3
4
5
6
7
8
System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e)
        {
            count = 1;
            mode = 0;
            q = 0;
            mas = new Song[9999];
            this->Size = System::Drawing::Size(764, 325);
        }
Массив объектов, по сути. То есть, вы предлагаете просто убрать его из класса?
0
 Аватар для MegaMozg
45 / 45 / 3
Регистрация: 19.12.2008
Сообщений: 110
21.05.2012, 13:23
вот и объявите
C++
1
Song* mas;
там же где и count, mode, q и т.д. А из Tags.h уберите.
1
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 42
21.05.2012, 13:31  [ТС]
О'кей, сейчас попробую.

Добавлено через 5 минут
Спасибо большое, эта проблема решилась! Но, правда, теперь мой класс не видит массив, в котором лежат его объекты. Т. е. для ф-ций класса указатель на mas стал пустым словом.
0
 Аватар для MegaMozg
45 / 45 / 3
Регистрация: 19.12.2008
Сообщений: 110
21.05.2012, 13:39
Предавайте указатель как параметр, например, в конструкторе класса.
Что-то намудрили вы с архитектурой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2012, 13:39
Помогаю со студенческими работами здесь

Fatal error LNK1169: one or more multiply defined symbols found
вроде прога работала, но сейчас выдает ошибку и все тут D:\VS 10\kurs\Debug\kurs.exe : fatal error LNK1169: one or more multiply defined...

LNK1169: one or more multiply defined symbols found
Не могу понять, в чём тут ошибка?? Помогите пожалуйста)) #include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; ...

Ошибка "LNK1169: one or more multiply defined symbols found" при добавлении файла в проект
Здравствуйте, у меня такая проблема в Microsoft Visual Studio 2013/2012: создаю проект, создаю C++ файл (ctrl+shift+a, кстати, подскажите,...

Ошибка: one or more multiply defined symbols found
Пишу программу на C++, все нормально работала, компилировалась, потом добавил строчку коментариев, (не стояло...), перекомпилировал и...

Fatal error LNK1169 (VS2017)
Доброго времени суток, уважаемое сообщество. Бороздил просторы интернета в поиске решения своей проблемы, и в отчаянии пишу сюда (тут тоже...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru