Possible Duplicate:
Are there general guidlines for solving undefined reference/unresolved symbol issues?




我想转换XML以插入sql语句。我已经准备好xml和xslt文件,并且我知道转换可以正常运行(用Oxygen测试)。

现在,我用c ++编码此转换失败。

我试图包括以下库:

#include <libxml2/libxml/xmlversion.h>
#include <libxml2/libxml/parser.h>
#include <libxml2/libxml/valid.h>
#include <libxml2/libxml/xmlschemastypes.h>
#include <libxml2/libxml/xmlschemas.h>
#include <libxml2/libxml/xmlmemory.h>
#include <libxml2/libxml/debugXML.h>
#include <libxml2/libxml/HTMLtree.h>
#include <libxml2/libxml/xmlIO.h>
#include <libxml2/libxml/DOCBparser.h>
#include <libxml2/libxml/xinclude.h>
#include <libxml2/libxml/catalog.h>
#include <xalanc/Include/PlatformDefinitions.hpp>
#include <xercesc/util/PlatformUtils.hpp>
#include <xalanc/XalanTransformer/XalanTransformer.hpp>


但是编译器向我展示了很多类似以下错误:

/home/kimpa2007/xml/src/main.cc:108: undefined reference to `xercesc_2_8::XMLUni::fgXercescDefaultLocale'

/home/kimpa2007/xml/src/main.cc:109: undefined reference to `xalanc_1_10::XalanTransformer::initialize(xercesc_2_8::MemoryManager&)'


有人可以解释如何以一种简单的方式编码这种转换吗?

最佳答案

它们是进行XSL转换的几种方法,请参见Process an XML document using an XSLT stylesheet micro howto


xsltproc
Xalan
撒克逊B
撒克逊6


我看到您打算使用Xalan。也许这实际上是正确的方法。注意,该库需要配置。您可以获取帮助以在Xayno90 post上对其进行配置。我在这里复制粘贴步骤:


  我终于设法将Xerces和Xalan一起编译并安装了
  Ubuntu 10.04,请执行以下操作:


步骤1

sudo apt-get source libxerces-c28
sudo apt-get source libxalan110


第2步。

add "export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" to /etc/ld.so.conf


第三步

you may need to change owner of source packages from root to normal user


步骤4.构建Xerces

export XERCESCROOT=/home/user/xerces-c2-2.8.0+deb1
cd $XERCESCROOT
cd src/xercesc
./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -rpthread -b64 -P /usr/local
make
sudo XERCESCROOT=$XERCESCROOT make install


第5步。构建Xalan

export XERCESCROOT=/usr/local
cd $XERCESCROOT
/usr/local$ cd ~
export XERCESCROOT=/home/user/xerces-c2-2.8.0+deb1
cd $XERCESCROOT
cd ~
export XALANCROOT=/home/user/xalan-1.10/c
cd $XALANCROOT
./runConfigure -p linux -c gcc -x g++ -b64 -P /usr/local
make
sudo XALANCROOT=$XALANCROOT make install


步骤6。

检查/ usr / local / lib和/ usr / local / include的目录,以确认Xerces和Xalan都已安装

对于这些XML库和软件包的特定于Ubuntu的安装,需要是一个Wiki,因为目前尚无明确的指南,并且必须解释其他操作系统的安装方法才能适合此安装。

也:


步骤0是从apach(https://xalan.apache.org/old/xalan-c/download.htmlhttp://ftp.udc.es/apache/xalan/xalan-c/sources/)下载项目
尝试从命令行编译它,或者在属性项目IDE中配置路径。
将帖子库更新为当前版本。
安装后,尝试编译更接近您需求的path/c/samples/XalanTransform


最后,阅读以下SO帖子:


Is XSLT worth it?
Are there any XSLT to C++ compilers available?

10-08 18:05