Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 1
Регистрация: 21.05.2012
Сообщений: 42

fatal error LNK1169: one or more multiply defined symbols found

21.05.2012, 13:01. Показов 4401. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru