我想了解一些这方面的知识,本人一点也不知道!!我现在要调用delphi写的DLL,里面的一个函数的返回值就是一个结构
但是,我按照这种结构用c++重新定义了一下,定义了一个该结构体的变量,用来接收这个函数中的该结构的返回,但是结果...是不是就是因为delphi和vc中“字节对齐”不一样的原因呢
但是,我按照这种结构用c++重新定义了一下,定义了一个该结构体的变量,用来接收这个函数中的该结构的返回,但是结果...是不是就是因为delphi和vc中“字节对齐”不一样的原因呢
调试欢乐多
如果用vc的话,你可这样设置:
project菜单->settings->c/c++标签->category组合框中选择:code generation.这时你会看到"struct member alignment"字样,你可以从它下面的组合框中选为1byte,这样就等于没有字节对齐的影响了。
是不是和字节对齐有关呢??或者应该如何在vc中解决这个问题呢
dll中的输出函数的那个输入的结构变量是用delphi写的
那我在vc调用这个函数时,也要传入这个参数,应该怎么解决?
#pragma pack( [ n1] )
....
code
....
#pragma pack( [ n2] )
n1 n2就是你指定的字节对齐常量。
详见msdn
在VC下是这样设置的
alt+F7→C/C++→Category→Code generation→Struct menber alignment.其中有好几个选项,不一定是按16个字节来补齐的。
如果你想让你的结构最小,就按从大到小的顺序定义其成员
特别感谢andy_lau提供了学习的资料名