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

boost库是否应该依赖于结构成员对齐?

  •  4
  • sorin  · 技术社区  · 16 年前

    我发现 hard way boost::program_options 依赖于编译器配置的结构成员对齐方式。

    如果使用默认设置构建boost并使用4字节对齐将其与项目链接( /Zp4 )它将在运行时失败(使用程序选项进行最小测试)。Boost将生成一个断言,指出可能存在错误的调用约定,但真正的原因是结构成员对齐。

    有什么办法可以防止这种情况发生吗?如果对齐使代码不兼容,那么这不应该包括在库命名中吗?

    1 回复  |  直到 9 年前
        1
  •  8
  •   Vicente Botet Escriba    16 年前

    您需要确保您的程序和链接的库具有相同的ABI。

    可以更改C++类和函数的ABI的编译器开关数量可能太大,因此,命名3000个以上组合显然是个问题。

    here