C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Невозможно обьявить переменную String - две разных библиотеки?  (Прочитано 2127 раз)
direk
Участник


Сказали спасибо: +6/-0
Offline

Сообщений: 79


Невозможно обьявить переменную String - две разных библиотеки?
« : 08 Февраль 2014, 18:28:43 »

когда пробую вставить переменну типа String, пишет ошибку:

[bcc32 Error] Edit_Film.h(154): E2015 Ambiguity between 'MediaInfoDLL::String' and 'System::String'

как обьяснить программе, какую библиотеку нужно использовать???
 
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: Невозможно обьявить переменную String - две разных библиотеки?
« Ответ #1 : 09 Февраль 2014, 13:48:31 »

System::String. Посмотри у себя, что это за MediaInfoDLL, в какие модули подключено? У тебя конфликт типов.
Записан
direk
Участник


Сказали спасибо: +6/-0
Offline

Сообщений: 79


Re: Невозможно обьявить переменную String - две разных библиотеки?
« Ответ #2 : 09 Февраль 2014, 14:25:40 »

Цитата: S0mbre от 09 Февраль 2014, 13:48:31
System::String. Посмотри у себя, что это за MediaInfoDLL, в какие модули подключено? У тебя конфликт типов.

Я использую MediaInfoDLL для получения тех. инф. с видеофайлов (кодек, битрейт и т.п.) -
http://mediaarea.net/uk/MediaInfo

это отдельный dll-файл, подключаю так:
Код
#include "MediaInfoDLL.h" //Dynamicly-loaded library (.dll or .so)
#define MediaInfoNameSpace MediaInfoDLL;
using namespace MediaInfoNameSpace;

Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: Невозможно обьявить переменную String - две разных библиотеки?
« Ответ #3 : 09 Февраль 2014, 19:53:41 »

Цитата: direk от 09 Февраль 2014, 14:25:40
Я использую MediaInfoDLL для получения тех. инф. с видеофайлов (кодек, битрейт и т.п.) -
http://mediaarea.net/uk/MediaInfo

это отдельный dll-файл, подключаю так:
Код
#include "MediaInfoDLL.h" //Dynamicly-loaded library (.dll or .so)
#define MediaInfoNameSpace MediaInfoDLL;
using namespace MediaInfoNameSpace;

1. Самое очевидное решение - убрать
Код
using namespace MediaInfoNameSpace;
 

и при этом вызывать функции (и типы) этой библиотеки с явным разрешением пространства имен, например
Код
MediaInfoNameSpace::String a = ""; // имя типа
int x = MediaInfoNameSpace::foo(); // вызов функции
 

2. Другой вариант - использовать везде System::String, если конфликт только с этим именем.

3. Или же можно вместо System::String (которое, кстати, является не прямым именем типа, а псевдонимом) можно использовать конкретный тип - AnsiString или UnicodeString (в зависимости от версии студии).
Записан
direk
Участник


Сказали спасибо: +6/-0
Offline

Сообщений: 79


Re: Невозможно обьявить переменную String - две разных библиотеки?
« Ответ #4 : 09 Февраль 2014, 20:04:53 »

А можно подробнее о втором варианте? Проблемы были только с STRING.
Да и вообще, что б на будущее знал.

Что имеется ввиду под  "использовать везде System::String"?
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: Невозможно обьявить переменную String - две разных библиотеки?
« Ответ #5 : 09 Февраль 2014, 20:59:58 »

Цитата: direk от 09 Февраль 2014, 20:04:53
А можно подробнее о втором варианте? Проблемы были только с STRING.
Да и вообще, что б на будущее знал.

Что имеется ввиду под  "использовать везде System::String"?

Имеется в виду, что когда тебе надо объявить переменную типа String, объявляй явно - System::String. То есть явно указывай пространство имен. Кстати, всегда лучше делать это явно, избегая using namespace.
Записан
direk
Участник


Сказали спасибо: +6/-0
Offline

Сообщений: 79


Re: Невозможно обьявить переменную String - две разных библиотеки?
« Ответ #6 : 09 Февраль 2014, 21:10:37 »

Цитата: S0mbre от 09 Февраль 2014, 20:59:58
Кстати, всегда лучше делать это явно, избегая using namespace.

Ну это какой пример нашел к MediaInfo, таким и пользовался )

А за консультацию большое спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.1 секунд. Запросов: 19.