您的位置:程序门 -> vc/mfc -> 进程/线程/dll



dll的一个问题,请大家帮忙解答一下


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


dll的一个问题,请大家帮忙解答一下
发表于:2007-01-30 11:05:42 楼主
在编写比较大的系统时常常接触到.dll文件,那么对于动态连接库。怎么将数据放入到这个动态链接库里?又是怎么调用想要的数据信息呢(也就是怎么用到vc++的应用程序中)?
发表于:2007-01-30 12:20:551楼 得分:0
我也在考虑这个问题啊,我开始用的是一个结构体,在测试的时候参数可以正确的传递到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);
}


快速检索

最新资讯
热门点击