我有一个在Visual Studio 2005中使用的Qt应用程序,该应用程序使用了大量其他库,这些库都使用1的结构成员对齐编译。我也很确定Qt默认使用结构成员对齐0.
当我使用结构成员对齐为0(其他库将失败)或1(Qt将失败)编译我的应用程序时,这显然会导致问题。
我在projects.pro文件的顶部添加了以下内容
QMAKE_CXXFLAGS_DEBUG + = -Zp1 QMAKE_CXXFLAGS_RELEASE + = -Zp1
我使用visual studio命令行启动configure.exe,它会创建makefile。
这会导致与Qt的0也许-Zp1结构成员对齐编译(我也试过/ ZP1)不是由编译器识别,但因为这是Studio如何视觉在其属性页中使用它,这将让我感到吃惊:
makefile中的
现在正在考虑做同样的事情:
此时我有makefile,我可以改变它,以便它可以使用1的结构成员对齐。这里没有成功。
如何编译Visual Studio 2005的Qt,结构成员对齐为1?
答案 0 :(得分:1)
Qt不支持与8(默认)不同的struct member aligment。解决此问题的唯一方法是使用#pragma pack
:
#pragma pack( [ show ] | [ push | pop ] [, identifier ] , n )
包围所有Qt代码并包含推送和弹出:
#pragma pack(push, 8)
...
#pragma pack(pop)