开发者

Struct size containing vector<T> different sizes between DLL and EXE

开发者 https://www.devze.com 2022-12-31 18:46 出处:网络
I have this situation where an EXE program imports a DLL for a single function call. It works by passing in a custom structure and returning a different custom structure. Up till now it\'s worked fine

I have this situation where an EXE program imports a DLL for a single function call. It works by passing in a custom structure and returning a different custom structure. Up till now it's worked fine until I wanted one of the structs data members to be a vector < MyStruct >

When I do a sizeof(vector< MyStruct >) in my program I get a size of 20 but when I do it 开发者_如何学编程from inside the DLL I get a size of 24. This size inconsistency is causing a ESP pointer error.

Can anyone tell me why a Vector < MyStruct > would be a different size in the DLL than in the program?

I have reverified that my structs in both the DLL and the Program are identical.

I would appreciate any help on the subject. Thank you.


I meet similar issue when the class has a vector<..> member, and with an inline construct function(implemented in header file). No matter DLL is release or dll version, as if as EXE is release version, size of that class calculated in EXE is 3 byte less than in DLL, thus the stack will be destroyed.

This problem can be fixed by one of below change:

  • It's only occured with VC98(SP6). Change to VS2008, issue disappears.

  • Move the inline construct function to CPP file, issue disappears
    too.

I hope someone can help to give a more detailed explanation.

0

精彩评论

暂无评论...
验证码 换一张
取 消