我正在使用 Xalan-C++ 进行 XSLT 转换,我在这段代码中遇到了分段错误:
XalanTransformer evalTransformer;
evalTransformer.setUseValidation(false);
evalTransformer.transform(*(xmlDoc.getDocumentBuilder()), rule_, resultStream);
以前,我使用此代码初始化 XalanDocumentBuilder:
// Create a XalanTransformer.
XalanTransformer theXalanTransformer;
// Get a document builder from the transformer...
docBuilder_ = theXalanTransformer.createDocumentBuilder();
然后用 , 创建一个 XML 文档docBuilder_
,所以xmlDoc.getDocumentBuilder()
(它只返回docBuilder_
)应该返回一个有效的指针。
如果我将 gdb 附加到正在运行的进程,这是堆栈跟踪的前几行:
#0 0x0a2de894 in ?? ()
#1 0x0514f8d9 in amxalanc_1_6::XalanTransformer::doTransform () from /usr/lib/libamxalanc1_6.so
该transform()
方法使用简单的输出流,但是当我更改第一个参数时,它现在失败了。我已经使用文档构建器对象成功地创建了一个 XML 文档。任何想法为什么我会在 Xalan 代码中出现分段错误?