So, I ran a quick BeyondCompare across the SDKS for 2022 vs 2021 and turned up differences which I believe should identify that 2022 is in fact NOT binary compatible with 2021.
In AcApDocWindow, we have three new methods:
ACAD_PORT bool isFloating() const;
ACAD_PORT virtual void documentWindowFloated(AcApDocWindow* docWindow);
ACAD_PORT virtual void documentWindowDocked(AcApDocWindow* docWindow);
Fair enough, these are declared last in the class so hopefully that is safe, for the given set of compilers. These methods aren't located by vtable offset.
However, in AcApDocManager, we have LOST this method:
ACCORE_PORT Acad::ErrorStatus appContextOpenPackage(const ACHAR *pszPackageName);
To my eye, that presumably makes code that compiled against 2021 fail if it is compiled against 2022 and used that method. Or is that entry point still visible in the compiled binary even though it has been removed from the headers?
Similarly, the signature of AcDbDatabase::deepClone() has changed subtly - its last arg changed from Adesk::boolean to bool. Ditto wBlockClone() - if these are located by name, then surely their mangled names should now be different? Are you relying on coincident argument sizes?
Solved! Go to Solution.
Solved by artc2. Go to Solution.
Given that the use-case of reactors is to overload existing functionality, it seems to me that only the most trivial of usages would not have added their own methods. If this is an accidental inclusion, that's fine, I can make sure we are careful to build around it (our code-base needs to compile against all versions of ObjectARX back to about 2016).
I note you didn't venture an opinion on AcApDocManager::appContextOpenPackage().
I'm concerned about these mostly because both document and window management are some of the most difficult areas to work and we have a LOT of code that stresses out pretty much anything AutoCAD offers in this space, and if I need to build different versions at every release because of breaking API changes, then I want to know sooner than later.
Can't find what you're looking for? Ask the community or share your knowledge.