binary-compatibility相关内容

如果放弃 .NET 中的标准 EventHandler 模式,我会失去什么?

.NET 中的事件有一个标准模式 - 它们使用 delegate 类型,该类型接受一个名为 sender 的普通对象,然后是第二个参数中的实际“有效负载",该参数应派生自 EventArgs. 从 EventArgs 派生第二个参数的基本原理似乎很清楚(请参阅 .NET Framework 标准库注释参考).随着软件的发展,它旨在确保事件接收器和源之间的二进制兼容性.对于每个事件,即使它只有 ..
发布时间:2022-01-18 12:22:20 C#/.NET

ARMv4/5/6 代码的哪些部分不适用于 ARMv7?

据我了解,ARMv7 处理器(例如 Cortex-A9)大多向后兼容旧 ARM 架构版本的代码.但是,我阅读了有关 尝试在 Cortex-A8 上运行 ARM9 代码 的报告,例如. ARMv4/5/6 (ARM7TDMI/ARM9/ARM11) 代码的哪些部分不能在 ARMv7 处理器上运行?这些旧 ARM 架构版本中存在哪些功能或架构特征会导致为这些版本构建的程序在 ARMv7 上失败? ..

添加属性时,如何保持 .NET 程序集的 COM 二进制兼容性?

我们开发了一个存储语言翻译信息的 .NET 程序集,它需要被 VB6 应用程序使用. 我们希望能够更改翻译信息而无需重新编译应用程序. 翻译由名为 LanguageServices 的两文件分部类提供. 一个文件是不变的库方法,另一个是所有从 resx 文件自动生成的属性,而 regx 是从语言翻译信息数据库生成的. 这一切都源于需要有一个中央翻译数据库,该数据库可以通过编 ..
发布时间:2022-01-14 12:33:41 C#/.NET

VS2017 和 VS2015 应用程序与 dll 之间的官方二进制不兼容是否准确?

TL;DR - MS 文档指出 VS2015 和 VS2017 库之间的二进制兼容性是单向,而我认为它必然是双向的.问题在哪里? 首先,背景: 任何 MSVC++ 构建的库都是 在 VS2015 和 VS2017 之间正式二进制兼容. 具体来说,您可以将 VS2015 C++ 应用程序与 2017 年的 MSVCRT140 版本一起使用.(VCRedist 向后兼容) 官方文档网站 ..

如何静态识别 JAR 中缺少的方法(二进制兼容性)

我想验证 2 个 JAR 之间的二进制兼容性. 遵循此答案中的建议 我使用了 jboss tattletale 但它只能找到丢失的类. 如何查找方法是否丢失?有可能吗? 例如 “Depends - on"类 Foo 依赖于 Bar(像许多其他中产阶级工人一样) import org.overlyusedclassnames.Bar公共课 Foo{public void s ..
发布时间:2022-01-01 17:00:50 Java开发

__cdecl 或 __stdcall 在 Windows 上?

我目前正在为 Windows 开发一个 C++ 库,它将作为 DLL 分发.我的目标是最大化二进制互操作性;更准确地说,我的 DLL 中的函数必须可以从使用多个版本的 MSVC++ 和 MinGW 编译的代码中使用,而无需重新编译 DLL.但是,我对哪种调用约定最好感到困惑,cdecl 或 stdcall. 有时我会听到诸如“C 调用约定是唯一保证与跨编译器相同的唯一一种"这样的陈述,这与“ ..
发布时间:2021-12-25 15:58:10 C/C++开发

java.lang.IncompatibleClassChangeError 的原因是什么?

我将 Java 库打包为 JAR,当我尝试从中调用方法时,它抛出了许多 java.lang.IncompatibleClassChangeError.这些错误似乎是随机出现的.什么类型的问题可能导致此错误? 解决方案 这意味着您在没有重新编译客户端代码的情况下对库进行了一些不兼容的二进制更改.Java 语言规范 §13 详细介绍了所有此类更改,最显着的是,将非static 非私有字段/方法 ..
发布时间:2021-11-25 11:15:33 Java开发

编译 0K 时,x64 系统上的 win32 应用程序的运行时错误(dll 加载)

我最初在win7 32位上设计了一个win32应用程序,用VC9.0.最近升级到win7 64位,尝试构建+执行之前的应用. 构建运行良好(win32 应用程序),但在运行时出现错误“[...] 已退出,代码为 -1073741701 (0xc000007b)." 我猜这是加载 [预期] 32 位 dll 的 64 位版本的结果. 此项目的特定依赖项是:文件库SDLmain.li ..
发布时间:2021-11-25 05:58:23 C/C++开发

java.lang.IncompatibleClassChangeError 的原因是什么?

我将 Java 库打包为 JAR,当我尝试从中调用方法时,它抛出了许多 java.lang.IncompatibleClassChangeError.这些错误似乎是随机出现的.什么类型的问题可能导致此错误? 解决方案 这意味着您在没有重新编译客户端代码的情况下对库进行了一些不兼容的二进制更改.Java 语言规范 §13 详细介绍了所有此类更改,最显着的是,将非static 非私有字段/方法 ..
发布时间:2021-11-19 22:42:24 Java开发

ARMv4/5/6 代码的哪些部分不能在 ARMv7 上运行?

据我了解,ARMv7 处理器(例如 Cortex-A9)大多向后兼容旧 ARM 架构版本的代码.但是,我已经阅读了尝试在 Cortex-A8 上运行 ARM9 代码的段错误的报告,例如. ARMv4/5/6 (ARM7TDMI/ARM9/ARM11) 代码的哪些部分不能在 ARMv7 处理器上运行?这些较旧的 ARM 架构版本中存在哪些功能或架构特征会导致为这些版本构建的程序在 ARMv7 ..

改造 void 方法以返回其参数以促进流畅性:打破变化?

“API 设计就像性爱:犯一个错误并支持你的余生" (Josh Bloch 在 twitter 上) Java 库中有很多设计错误.Stack extends Vector(讨论),我们不能在不造成破损的情况下修复它.我们可以尝试弃用 Integer.getInteger (讨论),但它可能会永远存在. 尽管如此,某些类型的改造可以在不造成损坏的情况下进行. Effective ..
发布时间:2021-11-15 20:58:40 Java开发

C#/.NET API 向后兼容的工具?

我找到了这个工具,http://sab39.netreach.com/Software/Japitools/JDK-Results/46/,它使用 javadoc 检查不同版本的 Java API 之间的向后兼容性. 是否有与 C#/.NET 等效的工具? 以下是使用此工具比较 JDK 1.5 和 JDK 6 API 的示例:http://www.kaffe.org/~stuart/j ..
发布时间:2021-11-15 00:34:24 C#/.NET

关于“Visual Studio 2015 和 Visual Studio 2017 之间的二进制兼容性"的问题

https:///docs.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017?view=vs-2017 表示保证 Visual Studio 2015 和 Visual Studio 2017 之间的 C++ 二进制兼容性,除了: 1)当使用/GL 编译器开关编译静态库或目标文件时. 2) 使用使用工具集构建的库时,该工具集 ..

每次生成 dll 时,如何告诉 vb6 不要创建新版本的接口/com 对象?

我有 .NET 代码使用的 vb6 com 服务器(ActiveX DLL 项目) 每次我对 vb6 代码进行更改并生成 dll 时,我也必须重新编译我的 .NET 客户端代码,因为看起来 VB6 会生成新的 GUID 或接口和 com 对象的版本. 我承认这是一个很好的做法,因为进行了更改,但我想禁用此行为,以便每次更新 vb6 dll 时我的 .NET 客户端代码都相同. 无 ..
发布时间:2021-09-16 20:42:26 C#/.NET

Scala:版本之间的二进制不兼容

为什么不同版本的 Scala 二进制文件不兼容? 解决方案 这与 trait 的编译方式有关,因为 trait 有点像接口,但它们可以包含实现.这使得进行不破坏源兼容性但破坏二进制兼容性的更改非常容易,因为当您将新方法与实现一起添加到特征时,您必须重新编译实现该特征的所有内容,以便它们将拿起那个实现.可能还有其他问题,但我认为它们大多是相同的. ..
发布时间:2021-07-15 19:22:55 其他开发

STL容器和二进制接口兼容性

STL二进制接口 我很好奇,是否有人在跨多个C ++编译器和平台的STL对象的兼容接口层上工作. 目标是支持将STL类型作为第一类或固有数据类型. 通常通过模板施加一些固有的设计限制来防止这种情况吗?这似乎是使用STL进行二进制分发的主要限制. 理论-也许答案是务实的 Microsoft已将精力投入到.NET中,并不太在乎C ++ STL支持是否是“一流". 开 ..
发布时间:2020-11-29 23:25:48 C/C++开发

默认构造函数和析构函数是否是内联的?

我很好奇编译器生成的默认构造函数和析构函数是否是内联的,因为我可以用任何一种方式对其进行辩护.一方面,您希望默认构造函数/析构函数不内联,以便以后添加它们不会破坏ABI(因为仅当存在默认值时编译的目标文件才会内联生成的定义而不是您定义的内容).另一方面,对于C ++编译器来说,编译C语言的性能与使用C编译器编译时一样,不能为每个分配的结构添加构造函数/析构函数调用,而在C ++中,类之间的唯一功能 ..
发布时间:2020-11-28 02:04:18 C/C++开发

不同版本的glibc的兼容性如何?

特别是: 是否可以确保glibc 2.x的所有版本都是二进制兼容的? 如果没有,如何在已为其他版本编译的系统上运行二进制文件(游戏)?我可以在其他文件夹中安装glibc吗? 我的具体问题是glibc 2.14(我拥有的)和2.15(游戏想要的)之间的兼容性. 我也许还会得到glibc 2.13的版本,但是我不确定该版本是否可以在2.14上运行. 解决方案 通常,为较 ..