// 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));
};
XML Borland 6 linker error
Порядок действий был такой:
Есть файл .dtd в нем описана структура xmltv. Его даем схавать XML Data Binding встроенному в Builder. На выходе имеем класс С++ с соответствующей структурой.
И 3 глобальные функции для доступа к ним.
Код:
Скомпилировал, программа запускается.
Далее создал элемент TXMLDocument *XMLDocument1; Указал ему мой .xml файл и передаю его в соответствующую функцию Gettv(TXMLDocument *Doc)
Код:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Gettv(XMLDocument1);
}
: 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 файлы вроде все подключены.
Помогите разобраться пожалуйста.
Поставил все заработало.
Тему можно закрывать.
Добавьте к проекту XmlRtl.lib
Ошибка глупая конечно, описалово в хидерах есть, а почему не видится исполняемый код не понятно.
:confused:
Помниться был такой гемор: если подключать заголовки в своем *.cpp файле, то линковщик ругался, подключаешь заголовки в своем *.hpp файле - все нормально хавает.
Перенес подключение *.h в хидер. Всеравно ругается... =(
Попробуй в cpp явно указать #pragma link XmlRtl.lib
Странно, может в этой xmlRtl.lib нет такой функции, или она там с другими параметрами?
На youtube есть ролик там проделывают тоже самое что я и все работает.... правда на Delphi
в настройках проекта, там где список пакетов, проверь что подключен необходимый пакет. Для работы с xml необходимо что бы был подключен xml3.bpi и xml3.lib если я правильно помню
все равно [Linker Error] Unresolved external
=(
http://www.codepedia.com/1/CppBuilderLinkingErrors
в самом конце
посмотри по ссілке
в самом конце
Хотя хотелось бы на с++, я к ним больше привык.
Насколько я понял проблема в том что lib для xml написана на delphi, и у неё не соответствуют названия функция с c++.
Спасибо за ответы.
Цитата: 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)