Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2021, 11:49   #1
klayx
Новичок
Джуниор
 
Регистрация: 03.06.2021
Сообщений: 4
По умолчанию Ошибка переопределения hConsole в colors.obj

Доброго времени суток. Столкнулся с следующей проблемой. Я создал хэдер colors.h, где создал enum и прототип функции, изменяющий цвет текста в консоли:
Код:
#pragma once
#include <iostream>
#include <Windows.h>
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
enum colors{
	DarkBlue = 1,
	DarkGreen = 2,
	DarkCyan = 3,
	Red = 4,
	Purple = 5,
	Yellow = 6,
	LightGray = 7,
	Gray = 8,
	Blue = 9,
	Green = 10,
	Cyan = 11,
	LightRed = 12,
	Magenta = 13,
	LightYellow = 14,
	White = 15
};
inline void setcolor(int a);
Для описания функции создал colors.cpp:
Код:
#include "colors.h"
inline void setcolor(int a) {
	SetConsoleTextAttribute(hConsole, a);
}
В файл с основным кодом, где я планировал использовать setcolor подключил "colors.h", но при компиляции высвечивается ошибка: LNK2005 "void * hConsole" (?hConsole@@3PAXA) уже определен в colors.obj и другие подобные. Как это исправить?
klayx вне форума Ответить с цитированием
Старый 21.07.2021, 12:07   #2
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Перенести инициализацю
Код:
= GetStdHandle(STD_OUTPUT_HANDLE);
в main и объявить extern.
ForenLi вне форума Ответить с цитированием
Старый 21.07.2021, 12:21   #3
klayx
Новичок
Джуниор
 
Регистрация: 03.06.2021
Сообщений: 4
По умолчанию

Спасибо, ошибка устранилась. Но компилятор ещё выдаёт ошибку LNK2019: ссылка на неразрешенный внешний символ "void __cdecl setcolor(int)" (?setcolor@@YAXH@Z) в функции "void __cdecl print(bool)" (?print@@YAX_N@Z). Как я понял возникает в функции print()(функция в основном cpp), которая использует setcolor(). Как её можно исправить?
klayx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка nafxcw.lib(afxglobals.obj) : error LNK2005 Gaatejr Visual C++ 0 29.07.2013 19:22
Уменьшить кол-во цветов (24bit -> 16 colors) Tronix Мультимедиа в Delphi 7 11.08.2011 17:48
Ошибка unable to open file 'COS.OBJ' Apricus Общие вопросы C/C++ 10 25.01.2011 22:03
Переопределения из new/delete в C++/CLI denes Общие вопросы C/C++ 2 11.10.2010 12:52
различные виды переопределения свойств Dawystrik Помощь студентам 5 20.03.2009 12:52