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.html,http://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?