首页 > 解决方案 > g++ "在 Linux 上对 `typeinfo for xercesc_3_2::XMLException" 的未定义引用

问题描述

g++我在使用和xercers编译包时遇到了以下错误。

/home/201999800003/YangFan/gcc/bin/g++ -o gcam.exe -O2 -pthread -ggdb -DNDEBUG -DFUSION_MAX_VECTOR_SIZE=30  -MMD -std=c++14 -Wno-deprecated -Wl,-rpath,/home/201999800003/xerces-c-3.2.3/src/xercesc/lib:/home/201999800003/xerces-c-3.2.3/src/xercesc/dom:/home/201999800003/xerces-c-3.2.3/src/xercesc/util -Wl,-rpath,    main.o -lgcam  -L/usr/local/lib -L/home/201999800003/xerces-c-3.2.3/src/xercesc/lib:/home/201999800003/xerces-c-3.2.3/src/xercesc/dom:/home/201999800003/xerces-c-3.2.3/src/xercesc/util -L/home/201999800003/YangFan/gcam-core/cvs/objects/build/linux -L   -lxerces-c -ljvm -L/home/201999800003/boost_1_75_0/stage/lib -Wl,-rpath,/home/201999800003/boost_1_75_0/stage/lib -lhector -lboost_system -lboost_filesystem   -lm 
/home/201999800003/YangFan/gcam-core/cvs/objects/build/linux/libgcam.a(scenario.o):(.gcc_except_table+0x3bc): undefined reference to `typeinfo for xercesc_3_2::XMLException'
/home/201999800003/YangFan/gcam-core/cvs/objects/build/linux/libgcam.a(scenario.o):(.gcc_except_table+0x424): undefined reference to `typeinfo for xercesc_3_2::DOMException'
/home/201999800003/YangFan/gcam-core/cvs/objects/build/linux/libgcam.a(scenario.o):(.gcc_except_table+0x428): undefined reference to `typeinfo for xercesc_3_2::XMLException'
/home/201999800003/YangFan/gcam-core/cvs/objects/build/linux/libgcam.a(scenario.o): In function `_ZN9XMLHelperIvE13safeTranscodeB5cxx11EPKDs':
/home/201999800003/YangFan/gcam-core/cvs/objects/containers/source/../../util/base/include/xml_helper.h:709: undefined reference to `xercesc_3_2::XMLPlatformUtils::fgMemoryManager'
/home/201999800003/YangFan/gcam-core/cvs/objects/containers/source/../../util/base/include/xml_helper.h:709: undefined reference to `xercesc_3_2::XMLString::transcode(char16_t const*, xercesc_3_2::MemoryManager*)'
/home/201999800003/YangFan/gcam-core/cvs/objects/containers/source/../../util/base/include/xml_helper.h:711: undefined reference to `xercesc_3_2::XMLPlatformUtils::fgMemoryManager'
/home/201999800003/YangFan/gcam-core/cvs/objects/containers/source/../../util/base/include/xml_helper.h:711: undefined reference to `xercesc_3_2::XMLString::release(char**, xercesc_3_2::MemoryManager*)'

我认为这是因为我的环境变量xercers不合适。错误信息说我使用过lxerces-c. 所以我的问题与我通过谷歌找到的其他问题不同。

特别是,我怀疑我设置错了LD_LIBRARY_PATH

之前,我试过LD_LIBRARY_PATH=/home/201999800003/xerces-c-3.2.3/src/xercesc/lib没有成功

所以我设置 LD_LIBRARY_PATH=/home/201999800003/xerces-c-3.2.3/src/xercesc/lib:/home/201999800003/xerces-c-3.2.3/src/xercesc/dom:/home/201999800003/xerces-c-3.2.3/src/xercesc/util. 因为我看到错误信息说XMLException并且这个文件在目录中/home/201999800003/xerces-c-3.2.3/src/xercesc/util

我四处搜索,没有找到任何关于如何设置环境变量的具体答案。

对不起,我是 Linux 和 C++ 的新手。谁能给我一个关于如何解决这个问题的提示?

非常感谢!

更新

我尝试安装另一个版本xerces3.1.1并再次编译包,它弹出完全相同的错误消息typeinfo for xercesc_3_2::XMLException。正常吗?

我也检查config.logxerces。尽管 xerces 配置成功,一些变量在 config.log 中显示为 undefined

/home/201999800003/xerces-c-3.2.3/conftest.cpp:116: undefined reference to `clock_gettime'
/home/201999800003/xerces-c-3.2.3/conftest.cpp:137: undefined reference to `wcsupr'
ACLOCAL='${SHELL} /home/201999800003/xerces-c-3.2.3/config/missing aclocal-1.16'
AUTOCONF='${SHELL} /home/201999800003/xerces-c-3.2.3/config/missing autoconf'
AUTOHEADER='${SHELL} /home/201999800003/xerces-c-3.2.3/config/missing autoheader'
AUTOMAKE='${SHELL} /home/201999800003/xerces-c-3.2.3/config/missing automake-1.16'
MAKEINFO='${SHELL} /home/201999800003/xerces-c-3.2.3/config/missing makeinfo'

标签: linuxgccg++

解决方案


推荐阅读