binary-compatibility

    62热度

    3回答

    我目前正在开发一个Windows的C++库,它将作为DLL分发。我的目标是最大化二进制互操作性;更确切地说,我的DLL中的函数必须可以从使用MSVC++和MinGW的多个版本编译的代码中使用,而无需重新编译该DLL。然而,我很困惑哪个呼叫约定是最好的,cdecl或stdcall。 有时我会听到像“C调用约定是唯一一个保证与编译器相同的语句”这样的语句,这与“There are some varia

    3热度

    3回答

    我在.NET中实现了一个插件系统。基础库实现了基本的类和接口公开给插件,插件库链接基础库使用暴露的类和接口。 我现在面临的问题是,基部库(有或没有修饰)的(简单)重新编译使插件不能够被装载,使异常消息: "Could not load file or assembly 'BaseLibrary, Version=0.0.1.68, Culture=neutral, PublicKeyToken=7

    1热度

    1回答

    起初的一些介绍:我目前正在研究一个C++兼容性的东西,这意味着能够使用不同的编译器选项运行项目。因此,我使用发布DLL和调试应用程序链接到其他项目进行测试。 使用STL时出现了大多数问题,所以我必须确保两个项目只使用自己的STL版本。 这就是为什么我有一个包装类,可以构建出std :: vectors,std :: lists等,但只包含一个完全兼容的数组。现在我可以将值包装在一个数组中,并将它们

    1热度

    1回答

    是否有可能使用j2me波兰语只有一个jar文件在多个手机上运行? 基本上我们希望有二进制兼容性,并且不希望不同建立不同的手机,在我们需要有良好的UI 同时我们也有3 optino 1. LWUIT,2抛光3 。自定义开发,我们想去波兰,但显示最初的黑客,我们需要建立它为单独的设备。 任何线索/指针? raxit

    8热度

    2回答

    我可以改变一个纯虚函数(基类),成为非纯而不运行到任意的二进制兼容性问题? (Linux操作系统,GCC 4.1) 感谢

    2热度

    3回答

    我有一个库可以编译为共享库(或Windows中的DLL)。它有一个派生自另一个库中另一个类的类。基类有一些虚拟方法,我的类覆盖了其中的一些。例如: class Base { public: virtual void method1(); virtual void method2(); virtual void method3(); }; class Deriv

    3热度

    2回答

    什么样的变化或代码进化破坏向后兼容性(主要是二进制兼容性)?它在任何地方都完全具体吗 我查了Scala language specification,却没有看到像Java Language Specification Ch. 13 Binary Compatibility此事的任何部分。

    10热度

    3回答

    我需要验证一些我有疑问的东西。如果共享库(.dll)用C语言编写,并使用C99标准编译并在编译器下编译。说MinGw。然后根据我的经验,它是二进制兼容的,因此可以从任何其他编译器使用。说MS Visual Studio。我以我的经验说过,因为我已经不止一次成功尝试过它。但我需要验证这是否是一条规则。 另外我想问一下它是否确实如此,那么为什么完全用C编写的库,例如openCV就不会为每个不同的OS提

    3热度

    2回答

    即使在派生类中进行涉及虚拟的其他更改,类视图的ABI是否仍然保持稳定? 也就是说,我有一个接口InterfaceA(具有许多纯虚函数的抽象类)和一个继承自它的类DerivedB。我写了一个函数库,它的功能是InterfaceA *。我想知道的是,只要接口本身没有改变,接口是否保持二进制兼容。 清除,如果我修改InterfaceA我不认为代码是二进制兼容的。但是,如果我只是修改DerivedB,说我

    7热度

    3回答

    我很好奇,如果编译器生成的默认构造函数和析构函数是内联或不是,因为我可以证明它的任何方式。一方面,您希望默认构造函数/析构函数为而不是为内联,以便稍后添加它们不会中断ABI(因为只有默认值时编译的对象文件将内置生成的定义而不是您定义的内容)。另一方面,为了让C++编译器能够编译C代码,并且能够在使用C编译器编译时执行它,它不能为每个分配的结构添加构造函数/析构函数调用,并且在C++中,类之间唯一的