如何使用Visual Studio 2010构建Xalan-C?

时间:2012-05-20 13:28:39

标签: xml-parsing xerces xalan xerces-c

我无法找到可能的证据。经过40个小时让自己陷入精神错乱之后,我不得不建立一个本地化项目,这个项目应该构建一个名为AllInOne的项目(构建Xalan-C.lib,natch)所需的头文件。

这个库是软件的弊端,我迫切需要一个答案,因为它是另一个库中的依赖,我别无选择。

1 个答案:

答案 0 :(得分:6)

我已经设法在Visual Studio 2010中构建Xalan-C版本1.11,与最新版本的Xerces-C(v3.1.1)兼容。我不知道是否可以使用早期版本,但这些是为了使用1.11版本构建我遵循的步骤:

  • 必须将Xerces-C构建为动态库,以获取MsgCreator.exe所依赖的xerces-c_3_1D.dll文件。

  • 克隆github repository以获取Xalan-C 1.11版的源代码。

  • 在Windows中设置环境变量XERCESCROOTXALANCROOT(不在Visual Studio中)。

     XERCESCROOT    The Xerces-C/C++ installation directory
     XALANCROOT     The Xalan-C/C++ source directory
    
  • 在VS2010中打开Xalan-C解决方案并构建MsgCreator项目。

  • 从Xerces-C版本中复制xerces-c_3_1D.dll文件,并将其放在Xalan-C构建文件夹中,该文件夹位于MsgCreator.exe所在的文件夹中。

现在可以生成构建“AllInOne”项目所需的“缺失”头文件(LocalMsgIndex.hpp和LocalMsgData.hpp)。

  • 在cmd中运行MsgCreator.exe,其中提供的XalanMsg_en_US.xlf路径位于$(XALANCROOT)\src\xalanc\NLS\en_US,以及构建区域设置消息时要使用的method

    MsgCreator.exe $(XALANCROOT)\src\xalanc\NLS\en_US\XalanMsg_en_US.xlf -TYPE=inmem
    

(我使用了-TYPE=inmem,但请检查哪种方法最适合您的解决方案)

  • 现在生成头文件并将其放在构建目录中(MsgCreator.exe所在的目录)。复制或移动到$(XALANCROOT)\src,现在应该可以找到它们。

  • 现在构建XalanMsgLib项目。

  • 在最终构建之前要做的最后一件事是在afxres.h文件(位于AllInOne.rc)中处理$(XALANCROOT)\Projects\Win32\Res\AllInOne的包含。 Visual Studio Express版不包含包含afxres.h标头的MFC库。我只是将其更改为#include "windows.h"

现在应该可以成功构建“AllInOne”。