代码之家  ›  专栏  ›  技术社区  ›  ppiotrowicz

在不同的系统上构建相同的

  •  6
  • ppiotrowicz  · 技术社区  · 17 年前

    我有3台机器。一个运行在windows 2000上,一个运行在XP SP3上,另一个运行在64位windows Server 2008上。 我有一个本地C++项目来构建(我用VisualStudio 2005 SP1构建)。

    确切地说,我指的是一点一点(当然除了构建时间戳)。

    有了win2k和winxp,我得到了完全相同的dll。但它们不同于用win2008 server构建的dll。 我已经设法得到几乎相同的dll,但有一些不同。在分解文件后,我发现函数顺序不一样(3个函数的顺序不同)。

    有人知道这是什么原因吗?

    在vcbuild.exe中,我找到了一个开关/订单。它以函数顺序文件作为输入。有人知道那个文件应该是什么样子吗?

    3 回复  |  直到 17 年前
        1
  •  7
  •   anon anon    17 年前

    您可能认为编译纯粹是确定性的(每次相同的输入都会产生相同的输出),但事实并非如此。例如,考虑优化器——这将需要一些内存来工作,可能更多地用于更高的优化方法。如果在一台机器上内存分配失败(因为该机器内存较少),那么编译器可能会忽略特定的优化,从而导致发出不同的代码。

    有很多类似的情况,所以你可能会在一些不可行的事情上付出很多努力。无论如何,为什么需要DLL按位相同?

        2
  •  0
  •   AProgrammer    17 年前

        3
  •  0
  •   Kunla Kunla    17 年前

    Windows Server 2008是唯一运行64位的计算机吗?如果是,那可能是你的问题。