2

我的应用程序调用 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 ;

}
4

1 回答 1

0

用#pragma pack(1) 打包你的结构

于 2013-12-20T09:37:48.923 回答