gpt4 book ai didi

c++ - 如何为虚函数设置对齐方式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:56 26 4
gpt4 key购买 nike

我正在使用 mingw 和来自 linux 的交叉编译为 Win32 开发插件。虽然我的插件成功地被应用程序加载,我什至从应用程序获得了一个 com 接口(interface),但我无法从那里调用函数 - 应用程序崩溃了。我认为这是由于 mingw 中接口(interface)实现的 vtable 对齐错误(这与 MSVS 完美配合)。

任何帮助将不胜感激,谢谢。

最佳答案

VTable 对齐(事实上,整个 VTable 系统)完全依赖于实现。您必须使用相同的编译器,使用相同的开关/设置进行编译,以便在链接后获得可运行的程序。

出于这个原因,您不能将 msvc 生成的二进制文件与 MinGW 生成的二进制文件链接起来。即使您让表对齐相同,名称修改算法也不同,而且没有人说两个编译器会为 vtable 本身内的各个函数选择相同的顺序。

如果您需要两个编译器之间的可移植接口(interface),那么您必须使用具有标准化 ABI 的 C(技术上是 extern "C")接口(interface)来实现。

关于c++ - 如何为虚函数设置对齐方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4290192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com