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

Конфликт имен в библиотеках - C++

Восстановить пароль Регистрация
 
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 238
14.07.2014, 15:44     Конфликт имен в библиотеках #1
Здравствуйте. Возникла проблема при одновременном подключении #include <X11/extensions/xf86vmode.h>
и #include "FreeImage.h"
Код ошибки:
C++
1
2
3
4
5
6
In file included from GUIImageManager.h:13:0,
                 from main.cpp:13:
/usr/include/FreeImage.h:139:17: ошибка: conflicting declaration «typedef int32_t BOOL»
In file included from /usr/include/X11/extensions/xf86vmode.h:37:0,
                 from main.cpp:9:
/usr/include/X11/Xmd.h:143:16: ошибка: «BOOL» has a previous declaration as «typedef CARD8 BOOL»
Что делать в такой ситуации? Как разрешить конфликт имен?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
14.07.2014, 15:46     Конфликт имен в библиотеках #2
DarkVortex, Объявления ведь в глобальном пространстве имен? Если да, то никак. Править инклуды.
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 238
14.07.2014, 15:49  [ТС]     Конфликт имен в библиотеках #3
Обойдется ли одними инклудами? Если да то какие могут быть последствия? В одном месте BOOL декларируется как unsigned char в другом как int.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
14.07.2014, 15:52     Конфликт имен в библиотеках #4
DarkVortex, Не факт что обойдется, нужно смотреть глубже. Наличие проблем тоже сходу не сказать.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
14.07.2014, 16:02     Конфликт имен в библиотеках #5
Не подключать оба хидера в одной единице трансляции, для этого разбить соответствующим образом логику на независимые части

Добавлено через 8 минут
Если библиотека header only, то можно попробовать че-нить типа такого:

C++
1
2
3
namespace xxx {
  #include <header.hpp>
}
но тут надо быть осторожным
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 238
14.07.2014, 16:20  [ТС]     Конфликт имен в библиотеках #6
Спасибо nemespace спас положение.
Yandex
Объявления
14.07.2014, 16:20     Конфликт имен в библиотеках
Ответ Создать тему
Опции темы

Текущее время: 09:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru