| 发表于: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); } | | |
|