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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.78
MrDos
0 / 0 / 0
Регистрация: 24.08.2012
Сообщений: 14
#1

Ошибка "first defined here" Code::Blocks - C++

28.10.2012, 12:46. Просмотров 4176. Ответов 3
Метки нет (Все метки)

Помогите решить ошибки при компиляции

Код:

main.cpp

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <string>
#include <signal.h>
#include <string.h>
#include <syslog.h>
//  --
#include "wheel.h"
 
#define DEBUG
 
#define MAXNAME 31
static Wheel *serv;
#ifndef DEBUG
static void clean_exit(int sig);
#endif
//using namespace std;
/***************************************************************************/
int main(int argc, char *argv[]){
    string d_name = (strrchr(argv[0], '/') + 1);
 
/* Инициализация основных объектов */
try{
    if(d_name.length() > MAXNAME) throw (string)"Main:d_name.length()!";
 
//    serv = new Wheel("serv_tm"); // (perent Daemon)
//    serv->Command("start");
    serv = new Wheel(d_name); // (perent Daemon)
    serv->Command((argc > 1) ? argv[1] : "");
 
/* Инициализация основных объектов */
    serv->Init();
 
#ifndef DEBUG
/* Настройка системных сигналов */
    signal(SIGINT, clean_exit);
    signal(SIGUSR1, clean_exit);
    signal(SIGQUIT, clean_exit);
    signal(SIGTERM, clean_exit);
    signal(SIGPIPE, SIG_IGN);
#endif
 
/* Ответвляемся и завершаем родительский процесс */
    serv->Daemonize();
 
/* Запуск */
    serv->Run();
//  --
 
//  -------------------------------------------------------------------------
    }catch( string e){
#ifdef DEBUG
cout << "FATAL_ERROR " << e << endl << "Exit." << endl;
#endif
    syslog(LOG_LOCAL0|LOG_INFO|LOG_ERR, "FATAL_ERROR: %s", e.c_str());
    closelog();
    }
return EXIT_FAILURE;
}// End main ----------------------------------------------------------------
/***************************************************************************/
 
// Обработчики сигналов
#ifndef DEBUG
static void clean_exit(int sig){
    serv->Exit(sig);
    exit(EXIT_SUCCESS);
}// End clean_exit
#endif
/***************************************************************************/
wheel.cpp

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#include <syslog.h>
#include <string.h>
#include <signal.h>
#include <iostream>
#include <errno.h>
//  --
#include "wheel.h"
#include "device.h"
#include "config.h"
#include "dbwriter.h"
//  --
#define DEBUG
//  ---------------------------------
using namespace std;
//  -------------------------------------------------------------------------
Wheel::Wheel(string nameserv) : Daemon(nameserv){
//    string nameserv = "serv_s"; // Уникальное имя сервиса     VARCHAR(32)
#ifdef DEBUG
cout << "\nWheel::Wheel(" << nameserv << ")           *******************************************************************\n\n";
#endif
    maxdev = 0;
    curdev = -1;
    trt = NULL;
 
// Получаем конфигурацию для данного сервера ( параметров сети, оборудования и имена таблиц )
    cfg = new Config(nameserv); // при неудаче исключение FError(msg)
 
#ifdef DEBUG
cout << "Wheel >> NetConf: " << cfg->getHost() << "  PS: " << cfg->getPort() << "  TM: " << cfg->getTimeAut() << endl;
#endif
}// End Wheel
//**************************************************//
void Wheel::Init(void){
/* Инициализация основных объектов */
    syslog(LOG_LOCAL0|LOG_INFO, "Init.");
 
// Подключение
#ifdef DEBUG
cout << "Connect...\n";
#endif
    int cn = 10; // попытки
    do{
        if(trt) delete trt;
        trt = new TransPort(cfg->getHost(), cfg->getPort(), cfg->getTimeAut() );
        if(trt->status() > 0) break;
#ifdef DEBUG
cout << "WARNING - " << cn << " : " << trt->getMsg();
#endif
        syslog(LOG_LOCAL0|LOG_INFO, "WARNING: Init: %s", trt->getMsg().c_str());
        sleep(2);
        if(!--cn) throw (string)trt->getMsg();
    } while(trt->status() < 1);
//-------------------------------------
 
 
 
// Выделяем память для указателей на виртуальные устройства
    maxdev = cfg->maxDevice();
#ifdef DEBUG
cout << "MaxDev: " << maxdev << endl;
#endif
    dd = new Device* [maxdev];
    if(!dd) throw (string)"Serv >> Memory - failed";
//-------------------------------------
 
 
 
// Инициализируем виртуальные устройства
#ifdef DEBUG
cout << "Init Device...\n";
#endif
//    curdev = 0;   dd[curdev] = new Device( cfg, trt );      //          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    for(curdev = 0;cfg->Next(); curdev++){
         dd[curdev] = new Device( cfg, trt );
#ifdef DEBUG
cout << dd[curdev]->getMsg() << endl;
#endif
    }
//-------------------------------------
 
 
 
// Инициализируем "самописец"
#ifdef DEBUG
cout << "Init DBWriter...\n";
#endif
    dbwr = new DBWriter(cfg);
#ifdef DEBUG
cout << dbwr->getMsg() << endl;
#endif
}// End Init
//  -------------------------------------------------------------------------
 
 
 
/***************************************************************************/
/* Запуск */
void Wheel::Run(void){// Цикл опроса
#ifdef DEBUG
cout << "\n\tWheel::Run()\n\n";
//int pid = 7;  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#endif
    syslog(LOG_LOCAL0|LOG_INFO, "Run.");
 
//    int timclear = 3600 * 27;
    while(pid){
#ifdef DEBUG
cout << "New" << endl;
#endif
        int rez = 0;
        for( curdev = 0; curdev < maxdev; curdev++){
            rez = dd[curdev]->Refresh(0);
//cout << endl << "MainDevRefreshRez: " << rez << endl;
//-------------------------------------
//            if((rez == E_RCV)||(rez == E_SND)){// Через 10 минут Повторное Подключение
            if(rez == E_SOCKET){// Повторное Подключение
#ifdef DEBUG
cout << "ReConnect..." << endl;
#endif
                int cn = 20000; // попытки
                do{
                    if(trt) delete trt;
                    trt = new TransPort(cfg->getHost(), cfg->getPort(), cfg->getTimeAut());
                    if(trt->status() > 0) break;
                    string mess = trt->getMsg();
 
#ifdef DEBUG
cout << "WARNING - " << cn << " : " << mess << " - " << endl;
#endif
                    syslog(LOG_LOCAL0|LOG_INFO, "WARNING: Reconnect: %s", mess.c_str());
                    sleep(10);
                    if(!--cn) throw (string)mess;
                } while(trt->status() < 1);
#ifdef DEBUG
cout << "OK." << endl;
#endif
            }
//-------------------------------------
 
            if(!dbwr->Write(dd[curdev])){
                syslog(LOG_LOCAL0|LOG_INFO, "ERROR: DBWriter: %s", dbwr->getMsg().c_str());
            }
//-------------------------------------
        } // for
//-------------------------------------
//  if(timclear >= (3600 * 24)){
//            if(!dbwr->oldClear()){
//cout << "Error." << dbwr->getMsg() << endl;
//                syslog(LOG_LOCAL0|LOG_ERR, "ERROR: %s", dbwr->getMsg().c_str());
//            }
//  timclear = 0;
//  }// if timclear
//    timclear++;
#ifdef DEBUG
cout << "End. Ждем: " << (cfg->getTCicle() / 1000 )<< " сек.\n";
#endif
    usleep( cfg->getTCicle() * 1000); // ждем милисекундах
    }// while
}// End Run
 
/***************************************************************************/
void Wheel::ErrLog(string st){
    syslog(LOG_LOCAL0|LOG_INFO,"ERROR: %s", st.c_str());
#ifdef DEBUG
    cout << "ERROR: " << st.c_str() << endl;
#endif
}
/***************************************************************************/

wheel.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
35
36
#ifndef Serv_class
#define Serv_class
 
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iostream>
//  --
#include "daemon.h"
#include "defs.h"
#include "config.h"
#include "transport.h"
#include "device.h"
#include "dbwriter.h"
//----------------------------------------------------------------
using namespace std;
//----------------------------------------------------------------
class Wheel : public Daemon{
public:
    Wheel(string);
    void Init(void);
    void Run(void);
    void ErrLog(string);
 
protected:
//private:
//  --
    int maxdev, curdev;
    Config *cfg;
    Device **dd;
    TransPort *trt;
    DBWriter *dbwr;
};
//----------------------------------------------------------------
#endif


Лог:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
obj/Debug/main.o||In function `main':|
/home/user/OPC/server_sd/main.cpp|18|multiple definition of `main'|
obj/Debug/main.o:/home/user/OPC/server_sd/main.cpp|18|first defined here|
obj/Debug/wheel.o||In function `Wheel':|
/home/user/OPC/server_sd/wheel.cpp|25|multiple definition of `Wheel::Wheel(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
obj/Debug/wheel.o:/home/user/OPC/server_sd/wheel.cpp|25|first defined here|
obj/Debug/wheel.o||In function `Wheel::Init()':|
/home/user/OPC/server_sd/wheel.cpp|42|multiple definition of `Wheel::Init()'|
obj/Debug/wheel.o:/home/user/OPC/server_sd/wheel.cpp|42|first defined here|
obj/Debug/wheel.o||In function `Wheel::Run()':|
/home/user/OPC/server_sd/wheel.cpp|107|multiple definition of `Wheel::Run()'|
obj/Debug/wheel.o:/home/user/OPC/server_sd/wheel.cpp|107|first defined here|
obj/Debug/wheel.o||In function `Wheel::ErrLog(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':|
/home/user/OPC/server_sd/wheel.cpp|171|multiple definition of `Wheel::ErrLog(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
obj/Debug/wheel.o:/home/user/OPC/server_sd/wheel.cpp|171|first defined here|
obj/Debug/wheel.o||In function `Wheel':|
/home/user/OPC/server_sd/wheel.cpp|25|multiple definition of `Wheel::Wheel(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
obj/Debug/wheel.o:/home/user/OPC/server_sd/wheel.cpp|25|first defined here|
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2012, 12:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка "first defined here" Code::Blocks (C++):

Code Blocks. Ошибка при компиляции "неправильный компилятор" - C++
Помогите разобраться. Качал пару версий code block - создаю новый проект, выбираю консоль, с++, пишу код (hello world:)), run and build -...

Ошибка в Code::Blocks "Process terminated with status 0" - C++
Здравствуйте) Пытаюсь откомпилировать этот код в Code::Blocks 13.12 (сам код из книги по OpenGL) . Среда настроена, как сказано...

Code::Blocks ошибка компиляции "fatal error iostream no such file or directory" - C++
Всем привет ! Я очень давно хотел научиться программировать и вот решил начать . Сначала посоветовали программу Dev C++ , но потом я...

Избавиться от "Нажмите любую клавишу..." в конце программы, code::blocks - C++
Собственно, сабж. Как это сделать?

Интерпретация астериска ("звёздочки") в Code::Blocks - C++
Здравствуйте, форумчане! Имеется незамысловатая программа: #include &lt;iostream&gt; int main(int argc, char *argv) { for (int...

Code::Blocks. "undefined reference to" - C++
Доброго времени суток! Это опять я :) Столкнулся со следующей проблемой. Есть 5 файлов: main.cpp --- здесь функция int...

3
snw
10 / 10 / 0
Регистрация: 11.10.2012
Сообщений: 93
28.10.2012, 16:28 #2
Так ведь пишет компилятор, что "Mutiple definitions of %function_name%(...)" - множественные определения функций. Вы присмотритесь, где у вас определение, а где реализация, скорее всего проблемы в том, что вы переопределяете функции, при том по несколько раз.
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
28.10.2012, 16:34 #3
может не стоит namespace std использовать глобально? Может из-за этого какие-то имена переопределяются?
Вообще в h файлах нехорошо писать using namespace ...
и ещё, в файлах
#include "device.h"
#include "config.h"
#include "dbwriter.h"
Стоят include-guard-ы? Тоже, можно было бы не подключать эти файлы к СРР файлам, т.к. они уже включены в общий h файл.
(Я бы на самом деле наоборот, исключил бы их из h файла заменив на предварительные объявления их содержимого)
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
02.11.2012, 14:54 #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
может не стоит namespace std использовать глобально
Как минимум ни в коем случае не стоит использовать using namespace std; в заголовочных файлах, вне зависимости от того, пересекаются имена в данном конкретном случае или нет.
0
02.11.2012, 14:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2012, 14:54
Привет! Вот еще темы с ответами:

Ошибки "Expression syntax" и "Unreachable code" при реализации класса матриц - C++
Подскажите по коду. #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;windows.h&gt; ...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Ошибка Необработанное исключение в "0x001d18f8" в "lr7v2.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcde9" - C++
class Hdd { public: char Hdd_name; int total_space; int free_space; int speed; Hdd *next; Hdd *previous; };

Code Blocks ошибка - C++
Помогите разобраться, почему программа выдает ошибку.


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

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

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