2

我一直在努力让 C++ IDE 在我的 64 位 Windows 7 机器上运行。这令人沮丧,主要是因为使用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 位机器上编译而遇到问题......

4

2 回答 2

0

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

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

于 2011-09-14T12:45:50.600 回答
0

这可能是由此提交修复的错误XALNC-643引起的。在启用了链接器标志 --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)
于 2017-06-26T16:22:03.090 回答