导出函数定义:
extern "C"  long _stdcall  fun1(const char * szDeviceName,ITEMDEF &item,int devType,char* szDesc,int flag);
其中ITEMDEF为自定义结构体类型
建立的为扩展dll,dll仍由vc开发的程序调用
这个结构体需要在客户方也定义吗?

解决方案 »

  1.   

    你的dll中的定义和客户那边的定义必须一致。
    否则很容易就会错误的。
      

  2.   

    1.DLL接口中别使用引用
    2.在DLL实现中要定义结构
      同时在使用DLL的地方也要定义,必须完全一致,否则可能产生异常.
      

  3.   

    这么麻烦干吗?
    extern "C"  long _stdcall  fun1(const char * szDeviceName,ITEMDEF &item,int devType,char* szDesc,int flag);
    建议改成
    long _stdcall  fun1(const char * szDeviceName,PVOID pItem,int devType,char* szDesc,int flag)
    {
        ITEMDEF* pvItem = (ITEMDEF*)pitem;
        ..........
    }
      

  4.   

    dll中的定义和客户方的定义完全相同
    可还是产生了异常