Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

XML Borland 6 linker error

74K
23 ноября 2011 года
eike
8 / / 23.11.2011
Пытаюсь загрузить данные из файла .xml в программу. Файл xmltv в нём содержится информация о телевизионных программах для цифрового телевиденья.

Порядок действий был такой:
Есть файл .dtd в нем описана структура xmltv. Его даем схавать XML Data Binding встроенному в Builder. На выходе имеем класс С++ с соответствующей структурой.
И 3 глобальные функции для доступа к ним.

Код:
// Global Functions

_di_IXMLtvType __fastcall Gettv(_di_IXMLDocument Doc)
{
  return (_di_IXMLtvType) Doc->GetDocBinding("tv", __classid(TXMLtvType));
};

_di_IXMLtvType __fastcall Gettv(TXMLDocument *Doc)
{
  _di_IXMLDocument DocIntf;
  Doc->GetInterface(DocIntf);
  return Gettv(DocIntf);
};

_di_IXMLtvType __fastcall Loadtv(const WideString FileName)
{
  return (_di_IXMLtvType) LoadXMLDocument(FileName)->GetDocBinding("tv", __classid(TXMLtvType));
};

_di_IXMLtvType __fastcall  Newtv()
{
  return (_di_IXMLtvType) NewXMLDocument()->GetDocBinding("tv", __classid(TXMLtvType));
};

Скомпилировал, программа запускается.

Далее создал элемент TXMLDocument *XMLDocument1; Указал ему мой .xml файл и передаю его в соответствующую функцию Gettv(TXMLDocument *Doc)
 
Код:
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{

           Gettv(XMLDocument1);
}


Но программа не компилится и пишет
[Linker Error] Unresolved external '__fastcall Xmldoc::TXMLNode::CreateCollection(const System::TMetaClass *, const _GUID&, const System::WideString, const System::WideString)' referenced from O:\BUILDER\EPG_XML\XMLTV.OBJ

hpp файлы вроде все подключены.
Помогите разобраться пожалуйста.
74K
29 ноября 2011 года
eike
8 / / 23.11.2011
Phodopus, спасибо огромное, по твоей наводке начал искать. Оказалось нужно обновление для билдера 4 поставить.
Поставил все заработало.

Тему можно закрывать.
277
23 ноября 2011 года
arrjj
1.7K / / 26.01.2011
Добавьте к проекту XmlRtl.lib
74K
24 ноября 2011 года
eike
8 / / 23.11.2011
Добавил через Project->Add to project. Результат тот же.
Ошибка глупая конечно, описалово в хидерах есть, а почему не видится исполняемый код не понятно.
:confused:
11
24 ноября 2011 года
oxotnik333
2.9K / / 03.08.2007
Помниться был такой гемор: если подключать заголовки в своем *.cpp файле, то линковщик ругался, подключаешь заголовки в своем *.hpp файле - все нормально хавает.
74K
24 ноября 2011 года
eike
8 / / 23.11.2011
Перенес подключение *.h в хидер. Всеравно ругается... =(
277
24 ноября 2011 года
arrjj
1.7K / / 26.01.2011
Попробуй в cpp явно указать #pragma link XmlRtl.lib
74K
24 ноября 2011 года
eike
8 / / 23.11.2011
Попробовал, все равно ругается. =(
Странно, может в этой xmlRtl.lib нет такой функции, или она там с другими параметрами?
На youtube есть ролик там проделывают тоже самое что я и все работает.... правда на Delphi
1
24 ноября 2011 года
kot_
7.3K / / 20.01.2000
в настройках проекта, там где список пакетов, проверь что подключен необходимый пакет. Для работы с xml необходимо что бы был подключен xml3.bpi и xml3.lib если я правильно помню
74K
24 ноября 2011 года
eike
8 / / 23.11.2011
В настройках проекта добавил пакет xml3.bpi
все равно [Linker Error] Unresolved external
=(
1
24 ноября 2011 года
kot_
7.3K / / 20.01.2000
посмотри по ссілке http://www.codepedia.com/1/CppBuilderLinkingErrors
в самом конце
74K
25 ноября 2011 года
eike
8 / / 23.11.2011
Поставил Delphi 7 и сделал эту штуку на ней... все работает, ничего не ругается.
Хотя хотелось бы на с++, я к ним больше привык.

Насколько я понял проблема в том что lib для xml написана на delphi, и у неё не соответствуют названия функция с c++.

Спасибо за ответы.
14
26 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
Цитата: eike

Но программа не компилится и пишет
[Linker Error] Unresolved external '__fastcall Xmldoc::TXMLNode::CreateCollection(const System::TMetaClass *, const _GUID&, const System::WideString, const System::WideString)' referenced from O:\BUILDER\EPG_XML\XMLTV.OBJ



 
Код:
099EEA LEDATA  Segment: '__fastcall Xmldoc::TXMLNode::CreateCollection(System::TMetaClass *, const _GUID&, const System::WideString, const System::WideString)'Offset: 0000  Length: 00B8


Так откуда у вас лишний const говорите выплыл?

ПыСы. Хотя у меня слинковалось без проблем, на xmlrtl60 как
Цитата:
qualified function __fastcall Xmldoc::TXMLNode::CreateCollection(System::TMetaClass *, const _GUID&, const System::WideString, const System::WideString)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог