【问题标题】:Getting an Eclipse C++ environment running with Xalan获取运行 Xalan 的 Eclipse C++ 环境
【发布时间】:2011-11-02 07:47:30
【问题描述】:

我一直致力于在我的 64 位 Windows 7 机器上安装 C++ IDE。这很令人沮丧,主要是因为使用 Eclipse IDE for C/C++ Developers

的 32 位和 64 位程序不兼容

好吧,我终于编译了 HelloWorld,现在我想将 Xalan 添加到我的项目中。我已经下载了源代码和二进制文件。让源代码在 MinGW(我选择的编译器)中编译是不可能的,但我正在使用二进制目录中的 .lib 文件,如 xerces-c_2.lib。我可以将这些链接到我的 C++ 项目吗?如果可以,我该怎么做?

谢谢!

编辑更新 2011-08-30

我只是运气不佳,但我想发布更新。我尝试在 Eclipse 之外构建它但没有成功。我正在尝试创建与 Xalan-C 捆绑在一起的 StreamTransform.cpp 示例。它位于与其关联的头文件的目录中:XalanMemoryManagerImpl.hpp

然后我创建了以下 Makefile:

OBJS = StreamTransform.o
CC = g++
DEBU \G = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
LIBDIR = -LC:\Development\xslTests\stream\lib
LIBS = -lxerces-c_2 -lxerces-depdom_2 -lXalan-C_1 
INCDIR = -IC:\Libs\xerces-c-windows_2000-msvc_60\include -IC:\Libs\Xalan-C_1_10_0-win32-msvc_60\include

all: transformer

transformer: $(OBJS)
  $(CC) $(LFLAGS) $(OBJS) -o transformer $(LIBDIR) $(LIBS) 

StreamTransform.o : StreamTransform.cpp XalanMemoryManagerImpl.hpp
  $(CC) $(INCDIR) $(CFLAGS) StreamTransform.cpp

基础目标 StreamTransform.o 成功运行并生成输出文件,但转换器死亡。 我在这里遇到的错误与我在 Eclipse 中遇到的错误相同。一堆“未定义的引用错误:

C:\Users\x_walia\workspace\TCXMLTransformer\Debug/../StreamTransform.cpp:115: 未定义对`xalanc_1_10::XSLTInputSource::XSLTInputSource(std::istream*, xercesc_2_7::MemoryManager&)'

StreamTransform.o:在函数 main': C:/Libs/Xalan-C_1_10_0-win32-msvc_60/include/xalanc/XSLT/XSLTResultTarget.hpp:103: undefined reference toxalanc_1_10::XalanMemMgrs::getDefaultXercesMemMgr()'中

对我来说,这看起来像是某种库链接错误,但是什么?我不应该有六个 .lib 文件与我正在使用的 Windows 二进制发行版捆绑在一起。其中一半具有后缀:_d,如 xerces-c_2*d* 中的后缀,代表调试库。我尝试了包括和省略这些但无济于事。

我听说这个项目被放弃了,想知道我是否只是因为我在 Windows 7 64 位机器上编译而遇到问题......

【问题讨论】:

    标签: c++ eclipse mingw xerces xalan


    【解决方案1】:

    这可能是由 XALANC-643 已由 this commit 修复的错误引起的。在启用了链接器标志 --as-needed 的环境中编译 Xalan-C 时会触发该错误。您可以使用更新的版本,也可以通过将库移动到链接命令的末尾来手动修复它。以 src/xalanc/Utils/MsgCreator/Makefile.in 为例:

    之前:

    ${EXTRA_LINK_OPTIONS} $(LIBS) $(XERCES_LIB) $^ -o $@ $(LOC_OTHER_LINK_PARAMETERS)
    

    之后:

    ${EXTRA_LINK_OPTIONS} $(LIBS) $^ -o $@ $(XERCES_LIB) $(LOC_OTHER_LINK_PARAMETERS)
    

    【讨论】:

      【解决方案2】:

      您不能将使用 Microsoft Visual C++ 构建的 C++ 库链接到使用 mingw 构建的对象或库。 ABI 不兼容。

      我首选的搜索引擎没有提供任何指向现有 Xalan/Xerces mingw 二进制文件的链接,因此您可能必须自己构建它们。

      【讨论】:

        猜你喜欢
        • 2017-06-06
        • 1970-01-01
        • 2017-03-29
        • 2016-01-07
        • 1970-01-01
        • 2021-02-27
        • 2019-08-13
        • 1970-01-01
        • 2015-04-13
        相关资源
        最近更新 更多