gpt4 book ai didi

dll - DLL和EXE之间包含vector 不同大小的结构大小

转载 作者:行者123 更新时间:2023-12-02 04:15:47 24 4
gpt4 key购买 nike

我遇到的情况是EXE程序为单个函数调用导入DLL。它通过传入自定义结构并返回不同的自定义结构来工作。到现在为止,它一直运行良好,直到我希望其中一个结构数据成员成为 vector

当我在程序中执行sizeof(vector )时,我的大小为20,但是当我从DLL内部执行时,我的大小为24。此大小不一致导致ESP指针错误。

谁能告诉我,为什么Vector 在DLL中的大小不同于程序中的大小?

我已经重新验证了我在DLL和程序中的结构是相同的。

我希望在这个问题上有任何帮助。谢谢。

最佳答案

当类具有vector <..>成员并具有内联构造函数(在头文件中实现)时,我遇到类似的问题。
无论DLL是发行版还是dll版本,就像EXE是发行版一样,在EXE中计算的该类的大小比DLL中的小3个字节,因此堆栈将被破坏。

可以通过以下更改之一解决此问题:

  • 仅在VC98(SP6)中出现。更改为VS2008,问题消失了。
  • 将内联构造函数移至CPP文件,问题消失
    太。

  • 我希望有人可以提供详细的解释。

    关于dll - DLL和EXE之间包含vector <T>不同大小的结构大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2862600/

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