Поиск:

Ответ в темуСоздание новой темы Создание опроса
> fatal error LNK1169: one or more multiply defined 
:(
    Опции темы
CTapMex
Дата 24.2.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



перерыл весь форум - в похожих темах ничего не помогло

есть 2 файла в проекте ,которые не зависят от других inet.cpp inet.h
Код

#ifndef __UTM_INET_H
#define __UTM_INET_H

#include "tchar.h"

#define ERROR_NO 1
#define ERROR_AUTHORIZATION 2
#define ERROR_DNS 4   /*Не могу получить адресс сервера. Проверте настройки DNS*/
#define ERROR_CONNECT 5  /*"Ошибка. Не могу подключиться к серверу."*/
#define ERROR_READ_DATA 6

int getAnswer(const char* login,const char* password, TCHAR* answer);

#endif //__UTM_INET_H



хедер inet.h инклудится в главном модуле

все компилится отлично. но вот я хочу перенести из inet.cpp в inet.h строку 
Код
char* FistTagBalans="Баланс (у.е.)";

для того чтобы я её мог изменить или прочитать из главного модуля. соответственно я её удаляю из inet.cpp и вставляю в inet.h

Код

#ifndef __UTM_INET_H
#define __UTM_INET_H

#include "tchar.h"

char* FistTagBalans="Баланс (у.е.)";
#define ERROR_NO 1
#define ERROR_AUTHORIZATION 2
#define ERROR_DNS 4   /*Не могу получить адресс сервера. Проверте настройки DNS*/
#define ERROR_CONNECT 5  /*"Ошибка. Не могу подключиться к серверу."*/
#define ERROR_READ_DATA 6

int getAnswer(const char* login,const char* password, TCHAR* answer);

#endif //__UTM_INET_H



после этого программа  не компилируется с ошибкой 
Код
UtmCheck.obj : error LNK2005: "char const * const FistTagBalans" (?FistTagBalans@@3PBDB) already defined in inet.obj
D:\Projects\UtmCheck\Debug\UtmCheck.exe : fatal error LNK1169: one or more multiply defined symbols found

ничего не могу сделать. пробовал добавить extern - не помогло.
в inet.cpp эта переменная только используется при вызове одной функции и все , а в главном модуле вообще еще не описывал.

Добавлено @ 21:33 
напрашивается ответ  - а не сделать ли в модуле Inet.cpp функцию которая будет менять эту переменную, и ряд других.
но все равно хотелось бы узнать в чем ошибка то...
PM MAIL   Вверх
Earnest
Дата 25.2.2007, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Оставь в покое определение переменной FistTagBalans - оно должно быть единственным и жить в cpp, как и было.
В хедер добавь объявление extern char* FirstTagBalans, чтобы сделать ее доступной другим.

Насчет функций - очень правильные мысли: глобальные переменные - это плохо управляемый механизм (в смысле поддержки).
Можно использовать метафору синглетона, но для одной строковой переменой - это конечно некоторый перебор... 


--------------------
...
PM   Вверх
CTapMex
Дата 25.2.2007, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 20.2.2007

Репутация: нет
Всего: нет



спасибо, помогло
PM MAIL   Вверх
Earnest
Дата 26.2.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Еще бы не помогло... smile 


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.