据我了解,无法链接使用不同版本的GCC应用程序二进制接口(interface)(ABI)的库。每个版本的GCC都有ABI更改吗?如果我使用GCC4.3.2,是否可以链接使用4.3.1构建的库?是否有某种矩阵列出了我可以组合GCC版本的所有方式? 最佳答案 从gcc-3.4.0开始,ABI向前兼容。IE。使用较旧版本创建的库可以与较新版本链接,并且它应该可以工作(反之则不行)。显然,可能存在错误,但文档中只提到了一个:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678
据我了解,无法链接使用不同版本的GCC应用程序二进制接口(interface)(ABI)的库。每个版本的GCC都有ABI更改吗?如果我使用GCC4.3.2,是否可以链接使用4.3.1构建的库?是否有某种矩阵列出了我可以组合GCC版本的所有方式? 最佳答案 从gcc-3.4.0开始,ABI向前兼容。IE。使用较旧版本创建的库可以与较新版本链接,并且它应该可以工作(反之则不行)。显然,可能存在错误,但文档中只提到了一个:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678
已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭去年。Improvethisquestion打破带有C++接口(interface)的DSO/共享库的二进制向后兼容性并不难。也就是说,是否有一个静态分析工具可以帮助检测这种ABI中断,如果它有两组不同的头文件:DSO的早期状态和当前状态的那些(也许还有DSO)?欢迎提供免费和商业产品建议。如果它还可以警告不良做法,例如DSO接口(interface)中的内联函数和默认函数参数,那就太好了。
已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭去年。Improvethisquestion打破带有C++接口(interface)的DSO/共享库的二进制向后兼容性并不难。也就是说,是否有一个静态分析工具可以帮助检测这种ABI中断,如果它有两组不同的头文件:DSO的早期状态和当前状态的那些(也许还有DSO)?欢迎提供免费和商业产品建议。如果它还可以警告不良做法,例如DSO接口(interface)中的内联函数和默认函数参数,那就太好了。
标题说明了一切。我说的是C/C++,因为两者都认为这是“实现问题”。我认为,定义一个标准接口(interface)可以轻松地在其上构建模块系统,以及许多其他好处。如果定义标准ABI,C/C++会“失去”什么? 最佳答案 在每个处理器上以最自然的方式实现事物的自由。我认为c特别是在比任何其他语言更多不同的架构上具有一致的实现。遵守针对当前常见的高端通用CPU优化的ABI将需要在一些奇怪的机器上进行不自然的扭曲。 关于c++-如果他们定义了标准ABI,C/C++"lose"会是什么?,我们在
标题说明了一切。我说的是C/C++,因为两者都认为这是“实现问题”。我认为,定义一个标准接口(interface)可以轻松地在其上构建模块系统,以及许多其他好处。如果定义标准ABI,C/C++会“失去”什么? 最佳答案 在每个处理器上以最自然的方式实现事物的自由。我认为c特别是在比任何其他语言更多不同的架构上具有一致的实现。遵守针对当前常见的高端通用CPU优化的ABI将需要在一些奇怪的机器上进行不自然的扭曲。 关于c++-如果他们定义了标准ABI,C/C++"lose"会是什么?,我们在
我看到很多关于C++没有标准ABI的讨论,就像C一样。我很好奇究竟是什么问题。到目前为止,我想出了名称修改异常处理RTTI还有其他与C++相关的ABI问题吗? 最佳答案 在我的头顶:C++特定:在哪里可以找到“this”参数。如何调用虚函数即它是否使用vtable或其他用于实现这一点的结构的布局是什么。如何处理多个定义多个模板实例化未内联的内联函数。静态存储持续时间对象如何处理创建(在全局范围内)如何处理本地函数的创建(如何将其添加到析构函数列表中)如何处理销毁(按创建的相反顺序销毁)您提到了异常(exception)情况。还有如何
我看到很多关于C++没有标准ABI的讨论,就像C一样。我很好奇究竟是什么问题。到目前为止,我想出了名称修改异常处理RTTI还有其他与C++相关的ABI问题吗? 最佳答案 在我的头顶:C++特定:在哪里可以找到“this”参数。如何调用虚函数即它是否使用vtable或其他用于实现这一点的结构的布局是什么。如何处理多个定义多个模板实例化未内联的内联函数。静态存储持续时间对象如何处理创建(在全局范围内)如何处理本地函数的创建(如何将其添加到析构函数列表中)如何处理销毁(按创建的相反顺序销毁)您提到了异常(exception)情况。还有如何
在导出包含与VisualStudio警告C4251相关的STL类的类之前,有几个问题:例如这个问题或这个问题。我已经阅读了UnknownRoad上的精彩解释。盲目地禁用警告似乎有点危险,尽管它可能是一种选择。包装所有这些std类并导出它们也不是一个真正的选择。毕竟它被称为标准模板库...即,想要为这些标准类提供一个接口(interface)。如何在我的dll接口(interface)中使用STL类?有哪些常见做法? 最佳答案 在进一步阅读之前请记住一件事:我的回答来自编写可移植代码的角度,这些代码可用于由在不同编译器下编译的模块组成
在导出包含与VisualStudio警告C4251相关的STL类的类之前,有几个问题:例如这个问题或这个问题。我已经阅读了UnknownRoad上的精彩解释。盲目地禁用警告似乎有点危险,尽管它可能是一种选择。包装所有这些std类并导出它们也不是一个真正的选择。毕竟它被称为标准模板库...即,想要为这些标准类提供一个接口(interface)。如何在我的dll接口(interface)中使用STL类?有哪些常见做法? 最佳答案 在进一步阅读之前请记住一件事:我的回答来自编写可移植代码的角度,这些代码可用于由在不同编译器下编译的模块组成