我的应用程序调用dll并使用dll结构更新应用程序结构。 但是应用程序结构中有一个额外的字段(bool enable)。
当我尝试分配我的应用程序struture.enable时,我得到了与垃圾值相同的更新。
如何检查dll中定义的结构大小和应用程序中定义的结构是否具有相同的语法。
我无法更改dll中的任何内容。
如果dll结构中不存在该字段,我希望将应用程序结构初始化为零。
我提供以下代码,
///// ** structure definition in the dll called application ** //////
typedef struct
{
DWORD Size;
bool mode;
BYTE check;
DWORD time_1;
DWORD time_2;
} STR_INTERFACE;
///// ** structure definition in the application ** //////
typedef struct
{
DWORD Size;
bool mode;
BYTE check;
DWORD time_1;
DWORD time_2;
bool enable;
} STR_INTERFACE;
///
///mypassedstr will conatin the updated structure pointer with the
///structure members updated by the dll
int MY_Appli_function::Interface_1_func ( LPCTSTR name_1, LPVOID mypassedstr )
{
STR_INTERFACE mycodestr;
STR_INTERFACE* mynewstr = (STR_INTERFACE*)mypassedstr;
mycodestr.Size = mynewstr->.Size ;
mycodestr.mode = mynewstr->.mode ;
mycodestr.check = mynewstr->.check ;
mycodestr.time_1 = mynewstr->.time_1 ;
mycodestr.time_2 = mynewstr->.time_2 ;
mycodestr.enable = mynewstr->.enable ;
}
答案 0 :(得分:0)
使用#pragma pack(1)
打包您的结构