3

我找不到证据证明这是可能的。经过 40 个小时让自己发疯后,我遇到了无法构建本地化项目的情况,该项目应该构建名称不佳的 AllInOne 项目(构建 Xalan-C.lib,natch)所需的头文件。

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

4

2 回答 2

7

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

  • Xerces-C 必须构建为动态库才能获得 MsgCreator.exe 所依赖的 xerces-c_3_1D.dll 文件。

  • 克隆github 仓库,获取 Xalan-C 1.11 版本的源代码。

  • XERCESCROOT在 windows中设置环境变量XALANCROOT(不在 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什么方法。

    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”了。

于 2012-07-12T12:17:18.983 回答
0

我也为此苦苦挣扎,这是我的食谱(VS2015,但请查找其他 IDE 的 cmake 文档)

请注意,我专门针对 xerces 3.2.3 和 xalan 1.12。使用 git tag 获取你需要的版本

git clone https://github.com/apache/xerces-c.git
cd xerces-c
git checkout v3.2.3
mkdir build
cd build
cmake .. -BVS2015 -G "Visual Studio 14 2015" -A x64 -DCMAKE_BUILD_TYPE=Debug
cd VS2015
devenv xerces-c.sln /Build Debug /Project ALL_BUILD

因为我将它与另一个以某种方式预期事物的构建过程一起使用:(假设您使用 bin/lib 子目录设置了一个名为 XERCESBUILD 的目标目录 env)

copy src\Debug\*.dll %XERCESBUILD%\bin
copy src\Debug\*.lib %XERCESBUILD%\lib

那么对于xalan

git clone https://github.com/apache/xalan-c
cd xalan-c
git checkout Xalan-C_1_12_0
mkdir build
cd build
set PATH=%PATH%;%XERCESBUILD%\bin
cmake .. -BVS2015 -G "Visual Studio 14 2015" -A x64 -DCMAKE_PREFIX_PATH=%JBCRELEASEDIR% -DXALAN_DEBUG=1 -DCMAKE_BUILD_TYPE=Debug -DXerce
sC_LIBRARY_DEBUG=%XERCESBUILD%\lib\xerces-c_3D.lib
cd VS2015
devenv xalan-c.sln /Build Debug /Project ALL_BUILD

请注意,xerces-c_3D.lib专门用于调试构建,因此在进行发布构建时删除D。

于 2021-11-12T20:50:15.570 回答