C ++
我正在寻找一些方法来交叉检查两个不同库的兼容性,这两个库应该共享相同的基本符号。
所以,我有libCommon,libA和libB以及我的应用程序。 libB使用来自libCommon的符号,就像libA一样。 我将它们编译到我的应用程序中,然后发现应用程序似乎在libA / libCommon和libB / libCommon边界上崩溃。
从这里,我假设在构建libA或libB时,不小心产生了libCommon的不同ABI(也许一个编译时使用-DEXTRA_STRUCT_STUFF或不同的gcc填充,或者其他)。 这在我的应用程序中发生,或者在编译libA和libB时发生。
有什么办法可以问以下问题:
我可以安全地将libA和libB混合到应用程序中吗? 在我的应用程序中是否一直使用libA和libB的共享符号?
这将帮助我缩小问题发生的地点和原因。
请注意,ABI合规性检查器不是我想要的(AFAICS)。 libA和libB是独立的项目,并做不同的事情。
我试图解决的真正问题是在Windows应用程序中从wxWidgets调用libstdc ++时发生的实际崩溃。 应用程序本身是使用mingw在Debian下交叉编译的。
先前的编译尝试已经奏效 - 只有当我使用较新的库版本重新构建工具链时,才会出现这些问题。
谢谢。
编辑:不知道它是否相关,但是我注意到objdump为dom的som显示不同的标志:$ i686-w64-mingw32-objdump -f * .dll | grep flags | 排序| uniq体系结构:i386,标志0x00000103:体系结构:i386,标志0x00000133:体系结构:i386,标志0x0000013b:
虽然103 DLL已加载,但通常不会调用。
链接地址: http://www.djcxy.com/p/60533.html上一篇: c++