2

我已经下载了 WSF-CPP 2.1.0 源,并将 vcvars 设置为 x86_amd64(使用 VS 2008/9.0),但我遇到了问题:

  1. 我必须禁用 wsf_c/axis2c/build/win32/makefile 中的 /WX 编译器选项才能尝试构建任何东西,因为 Axis2/C 代码中充斥着警告。
  2. 现在我遇到了多个 Axis2/C 源文件试图包含不存在的文件的问题,例如 httpd.h、http_core.h 等(具体的违规者在 wsf_c/axis2c/src/core/transport/http /服务器/apache2)。

对于编写 makefile 的人来说,数字 1 可能只是一个坏主意,因此可以忽略。但是数字 2 似乎比一些缺少的标头表明一个更大的问题,主要是因为我能够编译从Apache 网站下载的 Axis2/c 库而没有问题,但是代码是相同的(包括不存在的标头的#includes )。有谁知道可能导致这种差异的原因是什么?

具体来说,这里是我尝试设置 64 位环境变量的方式。我所做的只是替换 build.bat 和 wsf_c/build.bat 中的这一行:

@call vcvars32.bat /nologo

@call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64

我做错了吗?我是不是搞砸了别的东西?

此外,这是我在 StackOverflow 上提出的第一个问题。关于这一点,我会感谢任何关于格式、内容、语气、适当性等的批评。

4

1 回答 1

1

对于任何尝试使用不再受支持、过时的 WSO2 WSF/CPP/C 或 Axis2/C 的可怜人,我的第一个建议是尽可能使用不同的库。如果您拒绝接受此建议,请继续阅读。

最后通过反复试验让它正确构建。这是它所需要的:

  • 如我的问题所述,我必须禁用 wsf_c/axis2c/build/win32/makefile 中的 /WX 编译器选项,以防止构建由于 Axis2/C 代码中的所有警告而立即失败。
  • 同样如我的问题中所述,我必须更改 build.bat 顶部的行(build.bat 或 wsf_c/build.bat 都可以,因为它们在同一个控制台中运行,您只需要设置一次环境变量每个控制台会话)。我改变了线路

    @call vcvars32.bat /nologo
    

    @call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64
    

    这将编译器设置为在 64 位配置中构建所有内容。

  • 在 wsf_c/build.bat 中,我必须将第 11 行(或附近)的 Axis2/C 构建命令从

    nmake dist AUTOCONF=..\..\..\configure.in
    

    nmake install AUTOCONF=..\..\..\configure.in
    

    这神奇地修复了丢失的标题错误。如果我知道为什么,我会解释它。

  • 然后我不得不在该命令之后直接添加这一行:

    move ..\deploy ..\axis2c-bin-1.6.0-win32
    

    这是修复其余构建脚本所必需的,因为它们都将构建目录引用为axis2c-bin-1.6.0-win32,即使 Axis2/C 实际上将所有内容都放在名为“deploy”的文件夹中。如果您热衷于细节,您可以将对该文件夹的每个引用更改为最后具有“win64”,但我只是想以尽可能少的努力让它工作。

但请注意,这些都是超出 WSO2 文档中初始安装/构建说明的所有步骤。WSO2 说明中指出的所有步骤仍然是必需的(显然,除了专门用于 32 位的任何步骤)。

不幸的是,这并没有解决我的真正问题,即试图从 Axis2/C 加载 Rampart DLL。我一直在追求 WSO2 的实施,希望他们以更好的方式构建东西,但可惜,没有运气。我会将我的 Rampart 问题发布在一个单独的、同样不太可能被回答的线程中。我还没有在网络上的任何地方找到解决方案。

于 2013-04-04T13:54:06.877 回答