我也在考虑这个问题啊,我开始用的是一个结构体,在测试的时候参数可以正确的传递到DLL中,但是放到实际工程的时候,参数却传不进去了,不知道为什么?大家帮帮看看啊。
dll中:
struct METERTY
{
char szUserNo[16]; //户号
char szBureauID[20]; // 局编号
char szFactoryID[20]; // 出厂号
char szMeterType[40]; // 型号
char szMeterName[64]; //表计名称
char szAddr485[13]; // 485地址
WORD PT; // PT
WORD CT; // CT
char szMeterConstant[6]; //表常数
WORD wMeterID; //表计类型
WORD SSLX; //示数类型
WORD ZCBZ; //装拆标志
WORD CBRQ; //抄表日期
};
extern "C" __declspec(dllexport) bool Show(METERTY &ac) // 导出返回值为空的Show()函数
{
    AFX_MANAGE_STATE(AfxGetAppModuleState());
    AcceDlg dlg;
    dlg.aaa=ac.PT;//测试的时候传来的是正确的,可实际工程中却传不进去
    dlg.DoModal();}
调用DLL的程序:
struct METERTY
{
char szUserNo[16]; //户号
char szBureauID[20]; // 局编号
char szFactoryID[20]; // 出厂号
char szMeterType[40]; // 型号
char szMeterName[64]; //表计名称
char szAddr485[13]; // 485地址
WORD PT; // PT
WORD CT; // CT
char szMeterConstant[6]; //表常数
WORD wMeterID; //表计类型
WORD SSLX; //示数类型
WORD ZCBZ; //装拆标志
WORD CBRQ; //抄表日期
};
METERTY ac;
ac.PT=3;
typedef bool (* CallDll)(METERTY &);
    HINSTANCE hmod;
    hmod = ::LoadLibrary ("Access.dll");
if(hmod==NULL)
    {
        AfxMessageBox("Fail");
    }
    CallDll lpproc;
    lpproc = (CallDll)GetProcAddress (hmod,"Show");
    if(lpproc != NULL)
{
        if((*lpproc)(ac)==true)
{
MessageBox("成功");
}
}
    FreeLibrary(hmod);
}