| 查看: 291 | 回复: 2 | |||
| 当前主题已经存档。 | |||
wanglin628木虫 (著名写手)
|
[交流]
【求助】急请c语言高手帮忙解决程序问题(问题已经被我自己解决,金币送给自己啦)
|
||
请各位C语言高手帮忙解决,下面程序调用问题,这是一个调用制冷剂物性程序Refprop7.0软件,程序可调用单一组分制冷剂,调用语句为: strcpy(HFILES,"F:\\refprop7\\Fluids\\R134a.fld\0" ; strcpy(HFMIX,"F:\\refprop7\\Fluids\\HMX.BNC\0" ; 程序可输出正确结果.但调用两种组分混合工质却出现问题,语句为:strcpy(HFILES,"F:\\refprop7\\fluids\\R32.fld | F:\\refprop7\\fluids\\R125.fld\0" ; strcpy(HFMIX,"F:\\Refprop7\\Fluids\\HMX.BNC\0" ; 程序运行到上述语句:出现如下提示: Please enter file name UNIT 12: 请问问题处在哪,是dll文件出现问题还是什么,请各位专家不吝赐教。这程序对本人很重要,谢谢! 附上源文件,请大家帮帮忙调试一下,问题解决送20金币酬谢! //--------------------------------------------------------------------------- #include #include #include #include // Some constants... const size_t refpropfluidpathlength=100000; const long refpropcharlength=255; const long filepathlength=255; const long lengthofreference=3; const long errormessagelength=255; const long compsize=20; // Note compsize is 5, the max number of components // Definitions of the Refprop types typedef void (__stdcall *fp_SETUPDLLTYPE)(long&,char*,char*,char*,long&,char*,long,long,long,long); typedef void (__stdcall *fp_INFOdllTYPE)(long&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double& ; typedef void (__stdcall *fp_SATdllTYPE)(double&,double*,long&,double&,double&,double&,double*,double*,long&,char*, long); typedef void (__stdcall *fp_ENTROENTHALdllTYPE)(double&,double&,double*,double& ; typedef void (__stdcall *fp_TDPFLSHdllTYPE)(double&,double&,double*,double&,double&,double&,double*,double*,double&,double&,double&,double&,double&,double&,double&,long&,char*, long); typedef void (__stdcall *fp_DEHSFLSHdllTYPE)(double&,double&,double*,double&,double&,double&,double&,double*,double*,double&,double&,double&,double&,double&,double&,long&,char*, long); typedef void (__stdcall *fp_TQHFLSHdllTYPE)(double&,double&,double*,long&,double&,double&,double&,double&,double*,double*,double&,double&,double&,double&,double&,double&,long&,char*, long); typedef void (__stdcall *fp_MASSMOLEFRACTIONdllTYPE)(double*,double*,double& ; typedef void (__stdcall *fp_CRITPdllTYPE)(double*,double&,double&,double&,long&,char*, long); typedef void (__stdcall *fp_PSFL1dllTYPE)(double&,double&,double*,long&,double&,double&,long&,char*, long); typedef void (__stdcall *fp_TPRHOdllTYPE)(double&,double&,double*,long&,long&,double&,long&,char* HERR, long LengthHERR); typedef void (__stdcall *fp_PRESSdllTYPE)(double&,double&,double*,double& ; typedef void (__stdcall *fp_GIBBSdllTYPE)(double&,double&,double*,double&,double& GR); typedef void (__stdcall *fp_CVCPdllTYPE)(double&,double&,double*,double&,double& ; typedef void (__stdcall *fp_THERMdllTYPE)(double&,double&,double*,double&,double&,double&,double&,double&,double&,double&,double& ; typedef void (__stdcall *fp_THERM2dllTYPE)(double&,double&,double*,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double&,double& ; typedef void (__stdcall *fp_TRNPRPdllTYPE)(double&,double&,double*,double&,double&,long&,char*, long); typedef void (__stdcall *fp_2IVdllTYPE)(double&,double&,double*,double& ; typedef void (__stdcall *fp_LIMITXdllTYPE)(char*,double&,double&,double&,double*,double&,double&,double&,double&,long&,char*,long,long); typedef void (__stdcall *fp_SETKTVdllTYPE)(long&,long&,char*,double&,char*,long&,char*,long,long,long); typedef void (__stdcall *fp_GETKTVdllTYPE)(long&,long&,char*,double&,char*,char*,char*,char*,long ln1,long ln2,long ln3,long ln4,long ln5); typedef void (__stdcall *fp_GETFIJdllTYPE)(char*,char*,char*,char*,long,long,long); // Definition of pointers to the Refprop functions... void (__stdcall *SETUPdll)(long& NumberOfComponents, char* HFILES, char* HFMIX, char* HRF, long& ierr, char* HERR, long l1, long l2,long l3,long l4); void (__stdcall *INFOdll)(long& icomp, double& wm,double& ttp,double& tnbp,double& tc,double& pc,double& dc,double& zc,double& acf,double& dip,double& rgas); void (__stdcall *SATTdll)(double& TK,double* X, long& KPH, double& PkPa, double& RHOF, double& RHOG, double* XLIQ, double* XVAP,long& ierr, char* HERR, long LengthHERR); void (__stdcall *SATPdll)(double& PkPa,double* X, long& KPH, double& TK, double& RHOF, double& RHOG, double* XLIQ, double* XVAP,long& ierr, char* HERR, long LengthHERR); void (__stdcall *ENTROdll)( double& TK,double& RHOMOLL,double* X, double& SJMOLK); void (__stdcall *ENTHALdll)(double& TK,double& RHOMOLL,double* X, double& HJMOL); void (__stdcall *TDFLSHdll)(double&,double&,double*,double&,double&,double&,double*,double*,double&,double&,double&,double&,double&,double&,double&,long&,char*, long); void (__stdcall *TPFLSHdll)(double&,double&,double*,double&,double&,double&,double*,double*,double&,double&,double&,double&,double&,double&,double&,long&,char*, long); void (__stdcall *PDFLSHdll)(double&,double&,double*,double&,double&,double&,double*,double*,double&,double&,double&,double&,double&,double&,double&,long&,char*, long); void (__stdcall *DSFLSHdll)(double& RHOMOLL,double& SJMOLK, double* Z,double& TK, double& PKPA, double& RHOFMOL,double& RHOGMOL,double* X,double* Y, double& QUAL,double& UJMOL,double& HJMOL, double& CV,double& CP,double& W,long& ierr, char* HERR, long LengthHERR); void (__stdcall *DEFLSHdll)(double& RHOMOLL,double& UJMOL, double* Z,double& TK, double& PKPA, double& RHOFMOL,double& RHOGMOL,double* X,double* Y, double& QUAL,double& HJMOL,double& SJMOL, double& CV,double& CP,double& W,long& ierr, char* HERR, long LengthHERR); void (__stdcall *PEFLSHdll)(double& PKPA, double& UJMOL, double* Z,double& TK, double& RHOMOL, double& RHOFMOL,double& RHOGMOL,double* X,double* Y, double& QUAL,double& HJMOL,double& SJMOLK,double& CV,double& CP,double& W,long& ierr, char* HERR, long LengthHERR); void (__stdcall *DHFLSHdll)(double& RHOMOLL,double& HJMOL, double* Z,double& TK, double& PKPA, double& RHOFMOL,double& RHOGMOL,double* X,double* Y, double& QUAL,double& UJMOL,double& SJMOLK,double& CV,double& CP,double& W,long& ierr, char* HERR, long LengthHERR); void (__stdcall *PHFLSHdll)(double& PKPA, double& HJMOL, double* Z,double& TK, double& RHOMOL, double& RHOFMOL,double& RHOGMOL,double* X,double* Y, double& QUAL,double& UJMOL,double& SJMOLK,double& CV,double& CP,double& W,long& ierr, char* HERR, long LengthHERR); void (__stdcall *PSFLSHdll)(double& PKPA, double& SJMOLK, double* Z,double& TK, double& RHOMOL, double& RHOFMOL,double& RHOGMOL,double* X,double* Y, double& QUAL,double& UJMOL,double& HJMOL, double& CV,double& CP,double& W,long& ierr, char* HERR, long LengthHERR); void (__stdcall *THFLSHdll)(double& TK, double& HJMOL, double* Z,long& kr, double& PKPA,double& RHOMOL,double& RHOFMOL,double& RHOGMOL,double* X,double* Y, double& QUAL, double& U, double& SJMOLK,double& CV,double& CP,double& W,long& ierr, char* HERR, long LengthHERR); void (__stdcall *PQFLSHdll)(double& PKPA, double& QUAL, double* Z,long& kq, double& TK, double& RHOMOL,double& RHOFMOL,double& RHOGMOL,double* X,double* Y, double& UJMOL, double& HJMOL,double& SJMOLK,double& CV,double& CP,double& W,long& ierr, char* HERR, long LengthHERR); void (__stdcall *TQFLSHdll)(double& TK, double& QUAL, double* Z,long& kq, double& PKPA,double& RHOMOL,double& RHOFMOL,double& RHOGMOL,double* X,double* Y, double& UJMOL, double& HJMOL,double& SJMOLK,double& CV,double& CP,double& W,long& ierr, char* HERR, long LengthHERR); void (__stdcall *XMASSdll)(double* X, double* XKG,double& WMOL); void (__stdcall *XMOLEdll)(double* X, double* XKG,double& WMOL); void (__stdcall *CRITPdll)(double* X, double& TCRIT, double& PCRIT,double& RHOCRIT, long& ierr,char* HERR, long LengthHERR); void (__stdcall *PSFL1dll)(double& PKPA, double& SJMOLK, double* Z, long& KPH, double& TK, double& RHOMOL,long& ierr,char* HERR, long LengthHERR); void (__stdcall *TPRHOdll)(double& TK,double& PKPA,double* X,long& KPH,long& KGUESS, double& RHO, long& ierr,char* HERR, long LengthHERR); void (__stdcall *PRESSdll)(double& TK, double& RHOMOLL,double* X, double& PKPA); void (__stdcall *GIBBSdll)(double& TK, double& RHOMOLL,double* X, double& AR, double& GR); void (__stdcall *CVCPdll)(double& TK, double& RHOMOLL,double* X, double& CVJMOLK, double& CPJMOLK); void (__stdcall *THERMdll)(double& TK, double& RHOMOLL,double* X, double& PKPA, double& UJMOL,double& HJMOL,double& SJMOLK, double& CVJMOLK, double& CPJMOLK, double& GAMMAMS, double& HJTKKPA); void (__stdcall *THERM2dll)(double& TK, double& RHOMOLL,double* X, double& PKPA, double& UJMOL,double& HJMOL,double& SJMOLK, double& CVJMOLK, double& CPJMOLK, double& OMEGA, double& Z, double& HJTKKPA,double& aH,double& G,double& xkappa,double& beta,double& dPdD,double& d2PdD2,double& dPdT,double& dDdT,double& dDdP,double& spare1,double& spare2,double& spare3,double& spare4); void (__stdcall *TRNPRPdll)(double& TK, double& RHOMOLL,double* X, double& ETA, double& TCX, long& ierr,char* herr, long LengthHERR); void (__stdcall *DHDTdll)(double& TK, double& RHOMOLL,double* X, double& dHdT); void (__stdcall *DPDDdll)(double& TK, double& RHOMOLL,double* X, double& DPDRHO); void (__stdcall *DPDD2dll)(double& TK, double& RHOMOLL,double* X, double& DP2DD2); void (__stdcall *DPDTdll)(double& TK, double& RHOMOLL,double* X, double& DPT); void (__stdcall *DDDPdll)(double& TK, double& RHOMOLL,double* X, double& DRHODP); void (__stdcall *DDDTdll)(double& TK, double& [ Last edited by wanglin628 on 2009-4-22 at 22:29 ] |
» 猜你喜欢
实验室接单子
已经有7人回复
假如你的研究生提出不合理要求
已经有11人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
wanglin628
木虫 (著名写手)
- 应助: 0 (幼儿园)
- 金币: 2366.8
- 红花: 2
- 帖子: 2509
- 在线: 473小时
- 虫号: 589973
- 注册: 2008-08-30
- 专业: 食品科学基础
|
不好意思,这是程序后面部分: RHOMOLL,double* X, double& DRHODT); void (__stdcall *FGCTYdll)(double& TK, double& RHOMOLL,double* X, double& FUGACITY);// The following ifdef block is the standard way of creating macros which make exporting void (__stdcall *LIMITXdll)(char* htyp,double& TinK,double& rhoin_Mol,double& PinkPa, double* X, double& TminK, double& TmaxK, double& rhomaxMol,double& PmaxkPa, long& ierr,char* herr,long lnhtyp,long lnherr); void (__stdcall *SETKTVdll)(long& icomp, long& jcomp, char* hmodij,double& fij,char* hfmix,long& ierr,char* herr,long Lengthhmodij,long Lengthhfmix,long LengthHERR); void (__stdcall *GETKTVdll)(long& icomp, long& jcomp,char* hmodij,double& fij,char* hfmix,char* hfij,char* hbinp,char* hmxrul,long ln1,long ln2,long ln3,long ln4,long ln5); void (__stdcall *GETFIJdll)(char* hmodij,char* fij,char* hfij,char* hmxrul,long ln1,long ln2,long ln3); //#pragma argsused #include int main(int argc, char* argv[]) { // First create a pointer to an instance of the library // Then have windows load the library. HINSTANCE RefpropdllInstance; RefpropdllInstance = LoadLibrary("Refprop.dll"); // Then get pointers to the actual functions. SETUPdll = (fp_SETUPDLLTYPE) GetProcAddress(RefpropdllInstance,"SETUPdll"); INFOdll = (fp_INFOdllTYPE) GetProcAddress(RefpropdllInstance,"INFOdll"); SATTdll = (fp_SATdllTYPE) GetProcAddress(RefpropdllInstance,"SATTdll"); SATPdll = (fp_SATdllTYPE) GetProcAddress(RefpropdllInstance,"SATPdll"); ENTROdll = (fp_ENTROENTHALdllTYPE) GetProcAddress(RefpropdllInstance,"ENTROdll"); ENTHALdll = (fp_ENTROENTHALdllTYPE) GetProcAddress(RefpropdllInstance,"ENTHALdll"); TDFLSHdll = (fp_TDPFLSHdllTYPE) GetProcAddress(RefpropdllInstance,"TDFLSHdll"); TPFLSHdll = (fp_TDPFLSHdllTYPE) GetProcAddress(RefpropdllInstance,"TPFLSHdll"); PDFLSHdll = (fp_TDPFLSHdllTYPE) GetProcAddress(RefpropdllInstance,"PDFLSHdll"); DSFLSHdll = (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"DSFLSHdll"); DEFLSHdll = (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"DEFLSHdll"); PEFLSHdll = (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"PEFLSHdll"); DHFLSHdll = (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"DHFLSHdll"); PHFLSHdll = (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"PHFLSHdll"); PSFLSHdll = (fp_DEHSFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"PSFLSHdll"); THFLSHdll = (fp_TQHFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"THFLSHdll"); PQFLSHdll = (fp_TQHFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"PQFLSHdll"); TQFLSHdll = (fp_TQHFLSHdllTYPE)GetProcAddress(RefpropdllInstance,"TQFLSHdll"); XMASSdll = (fp_MASSMOLEFRACTIONdllTYPE)GetProcAddress(RefpropdllInstance,"XMASSdll"); XMOLEdll = (fp_MASSMOLEFRACTIONdllTYPE)GetProcAddress(RefpropdllInstance,"XMOLEdll"); CRITPdll = (fp_CRITPdllTYPE)GetProcAddress(RefpropdllInstance,"CRITPdll"); PSFL1dll = (fp_PSFL1dllTYPE)GetProcAddress(RefpropdllInstance,"PSFL1dll"); TPRHOdll = (fp_TPRHOdllTYPE)GetProcAddress(RefpropdllInstance,"TPRHOdll"); PRESSdll = (fp_PRESSdllTYPE)GetProcAddress(RefpropdllInstance,"PRESSdll"); GIBBSdll = (fp_GIBBSdllTYPE)GetProcAddress(RefpropdllInstance,"GIBBSdll"); CVCPdll = (fp_CVCPdllTYPE)GetProcAddress(RefpropdllInstance,"CVCPdll"); THERMdll = (fp_THERMdllTYPE)GetProcAddress(RefpropdllInstance,"THERMdll"); THERM2dll = (fp_THERM2dllTYPE)GetProcAddress(RefpropdllInstance,"THERM2dll"); TRNPRPdll = (fp_TRNPRPdllTYPE)GetProcAddress(RefpropdllInstance,"TRNPRPdll"); DHDTdll = (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DHDTdll"); DPDDdll = (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DPDDdll"); DPDD2dll = (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DPDD2dll"); DPDTdll = (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DPDTdll"); DDDPdll = (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DDDPdll"); DDDTdll = (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"DDDTdll"); FGCTYdll = (fp_2IVdllTYPE)GetProcAddress(RefpropdllInstance,"FGCTYdll"); LIMITXdll = (fp_LIMITXdllTYPE)GetProcAddress(RefpropdllInstance,"LIMITXdll"); SETKTVdll = (fp_SETKTVdllTYPE)GetProcAddress(RefpropdllInstance,"SETKTVdll"); GETKTVdll = (fp_GETKTVdllTYPE)GetProcAddress(RefpropdllInstance,"GETKTVdll"); GETFIJdll = (fp_GETFIJdllTYPE)GetProcAddress(RefpropdllInstance,"GETFIJdll"); // Now use the functions. // Refprop variables that need to be defined // // nc = Number of components in the mixture // x[NumberOfComponentsInMixtures] = Mole fraction of each component // ierr = An integer flag defining an error // HFILES[] = a character array defining the fluids in a mixture // HRF[] = a character array denoting the reference state // HERR[] = a character array for storing a string - Error message // HFMIX[] a character array defining the path to the mixture file double x[compsize]={0}; long nc,ierr; char HFILES[refpropfluidpathlength+1], HRF[lengthofreference+1], HERR[errormessagelength+1],HFMIX[refpropcharlength+1]; nc = 1; x[0] = 1.0; // Set HFILES to the path of the R134a.fld file. Terminate with '\0' // Set HFMIX to the path of the HMX.BNC file. Terminate with '\0' // Set HRF to a reference...DEF in this case. Terminate with '\0' // Set HERR to a default error..."ok" for now. Terminate with '\0' strcpy(HFILES,"F:\\refprop7\\Fluids\\R134a.fld\0"); strcpy(HFMIX,"F:\\refprop7\\Fluids\\HMX.BNC\0"); strcpy(HRF,"DEF\0"); strcpy(HERR,"Ok\0"); // Note, the directory will likely be different on other machines // Call SETUPdll to initialize global variables in Refprop SETUPdll(nc, HFILES, HFMIX, HRF, ierr, HERR, refpropfluidpathlength,refpropcharlength, lengthofreference,errormessagelength); printf("%ld\n",ierr); // Create variables that are to be // (a) Used to call the SATPdll function // (b) Returned by the SATPdll function double XLIQ[compsize]={0.0}; double XVAP[compsize]={0.0}; // Some values... double PkPa,TK,RHOF,RHOG; long KPH; KPH = 2; // Vapor PkPa = 101.325; SATPdll(PkPa,x,KPH,TK,RHOF,RHOG,XLIQ,XVAP,ierr,HERR,errormessagelength); printf("%f,%f,%f,%ld\n",RHOF,RHOG,TK,ierr); // Answers from the Refprop interface program, to check results // Tsat(101.325) = 247.08 K // rhof = 13.493. mol/m^3 // rhog = 0.051533 mol/m^3 // Now try a mixture...say R410a nc = 2; x[0] = 0.69762; x[1] = 0.30238; // Set HFILES to the mixture of R32 and R125. Terminate with '\0' strcpy(HFILES,"F:\\refprop7\\fluids\\R32.fld|F:\\refprop7\\fluids\\R125.fld\0"); strcpy(HFMIX,"F:\\Refprop7\\Fluids\\HMX.BNC\0"); strcpy(HRF,"DEF\0"); strcpy(HERR,"Ok\0"); SETUPdll(nc, HFILES, HFMIX, HRF, ierr, HERR, refpropfluidpathlength,refpropcharlength, lengthofreference,errormessagelength); printf("%ld\n",ierr); KPH = 2; // Vapor PkPa = 101.325; SATPdll(PkPa,x,KPH,TK,RHOF,RHOG,XLIQ,XVAP,ierr,HERR,errormessagelength); printf("%f,%f,%f,%ld\n",RHOF,RHOG,TK,ierr); // For vapor (KPH = 2) // Tsat(101.325) = 221.74 K // rhof = 18.594 mol/m^3 // rhog = 0.057501 mol/m^3 return 0; FreeLibrary(RefpropdllInstance); } [ Last edited by wanglin628 on 2009-4-22 at 20:32 ] |
2楼2009-04-22 20:22:30
wanglin628
木虫 (著名写手)
- 应助: 0 (幼儿园)
- 金币: 2366.8
- 红花: 2
- 帖子: 2509
- 在线: 473小时
- 虫号: 589973
- 注册: 2008-08-30
- 专业: 食品科学基础
3楼2009-04-22 20:23:36












; strcpy(HFMIX,"F:\\refprop7\\Fluids\\HMX.BNC\0"
回复此楼