linux下用tinyxml来解析XML

wjh19870407 2010-08-03 10:58:04
根据网上的这个例子编译,却出现一些“undefined reference to”的错误;
错误如下:
8-3.cpp:(.text+0x81): undefined reference to `TiXmlDocument::TiXmlDocument(char const*)'
8-3.cpp:(.text+0x94): undefined reference to `TiXmlDocument::LoadFile(TiXmlEncoding)'
8-3.cpp:(.text+0x1a7): undefined reference to `TiXmlElement::GetText() const'
8-3.cpp:(.text+0x1f0): undefined reference to `TiXmlElement::Attribute(char const*) const'
/tmp/cceasJCM.o: In function `TiXmlNode::FirstChildElement()':
8-3.cpp:(.text._ZN9TiXmlNode17FirstChildElementEv[TiXmlNode::FirstChildElement()]+0xd): undefined reference to `TiXmlNode::FirstChildElement() const'
/tmp/cceasJCM.o: In function `TiXmlNode::FirstChild(char const*)':
8-3.cpp:(.text._ZN9TiXmlNode10FirstChildEPKc[TiXmlNode::FirstChild(char const*)]+0x14): undefined reference to `TiXmlNode::FirstChild(char const*) const'
/tmp/cceasJCM.o: In function `TiXmlNode::NextSibling(char const*)':
8-3.cpp:(.text._ZN9TiXmlNode11NextSiblingEPKc[TiXmlNode::NextSibling(char const*)]+0x14): undefined reference to `TiXmlNode::NextSibling(char const*) const'
/tmp/cceasJCM.o: In function `TiXmlString::quit()':
8-3.cpp:(.text._ZN11TiXmlString4quitEv[TiXmlString::quit()]+0xc): undefined reference to `TiXmlString::nullrep_'
/tmp/cceasJCM.o: In function `TiXmlDocument::~TiXmlDocument()':
8-3.cpp:(.text._ZN13TiXmlDocumentD1Ev[TiXmlDocument::~TiXmlDocument()]+0xb): undefined reference to `vtable for TiXmlDocument'
8-3.cpp:(.text._ZN13TiXmlDocumentD1Ev[TiXmlDocument::~TiXmlDocument()]+0x24): undefined reference to `TiXmlNode::~TiXmlNode()'
collect2: ld 返回 1

///////////////////////////////////////////////////////////////////////////
下面是要编译的测试程序
#include <iostream>
#include "tinyxml.h"

using namespace std;

int main(int,char *[])
{
TiXmlDocument dom("D:/1.xml");
bool bSuccess = dom.LoadFile();
if (!bSuccess)
{
cout<<"打开失败!"<<endl;
cout<<"错误的原因:"<<dom.ErrorDesc()<<endl;
}
TiXmlElement *pElement=dom.FirstChildElement();

TiXmlNode* pRecord=pElement->FirstChild("Record");
while (pRecord != 0)
{
// 得到结点里的内容
TiXmlNode* pName=pRecord->FirstChild("Name");
TiXmlElement* pNameEle=pName->ToElement();
cout<<"结点名:"<<pNameEle->Value()<<endl;
cout<<"内容:"<<pNameEle->GetText()<<endl;

// 得到结点的属性
cout<<" 结点的属性"<<pNameEle->Attribute("id")<<endl;

// 通过自己来找与自己同层的兄弟
pRecord=pRecord->NextSibling("Record");
}
getchar();
return 0;
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hxzb7215191/archive/2006/12/08/1434960.aspx
...全文
1108 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
do多多do 2012-05-16
  • 打赏
  • 举报
回复
-DTIXML_USE_STL
codelast.com 2010-08-04
  • 打赏
  • 举报
回复
这种情况基本上可以说是找不到tinyxml的静态/动态库导致的。编译参数里面加上库路径。
yui 2010-08-04
  • 打赏
  • 举报
回复
也可能是安装时没装到linux默认的路径,g++找不到库文件
steptodream 2010-08-03
  • 打赏
  • 举报
回复
你根本没有安装的tinyxml相关的库文件把!
参考这篇http://blog.csdn.net/chenxiaohua/archive/2009/06/16/4272171.aspx
wjh19870407 2010-08-03
  • 打赏
  • 举报
回复
再具体一下 我直接用 g++ -o 8-3 8-3.cpp这样编译的 接着就出来那些错误

23,183

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧