DLL返回的字符串值
我在DLL入口函数如下:
extern "C" __declspec(dllexport) bool __stdcall Pub_ExpressMath(char *Express,char * Value, bool Checkeds, int Division = 1)
{
TMathCalculated *Math;
String ExpressStr;
bool BReturn;
ExpressStr = Express;
if (ExpressStr == "")
{
ExpressStr = "0.00";
return true;
}
Math = new TMathCalculated(Express);
BReturn = Math->Pub_ExpressMath(ExpressStr, Checkeds, Division);
if (!BReturn)
{
ExpressStr = "0.00";
}
strcpy(Value,ExpressStr.c_str());
return BReturn;
}
然后调用接口如下:
String Express = Memo1->Text.Trim();
char *Result = "0.00";
if (MathDLL != NULL)
{
typedef bool (TPub_ExpressMath)(char *, char *, bool, int);
TPub_ExpressMath *Pub_ExpressMath;
Pub_ExpressMath = (TPub_ExpressMath *)GetProcAddress(MathDLL,"Pub_ExpressMath");
if (MathDLL != NULL)
{
Pub_ExpressMath(Express.c_str(),Result,true,1);
// Label1->Caption = "结果="+String(Result); //这样会出错,为什么?
ShowMessage(Result); //正确Show出
}
}
出错地方就是上面的Label中赋值,也就是搞不懂为什么在赋值时候出错,用SHOW的办法的话,可以Show出结果;如下调用也一样出错:
String Express = Memo1->Text.Trim();
char *Result = "0.00";
if (MathDLL != NULL)
{
typedef bool (TPub_ExpressMath)(char *, char *, bool, int);
TPub_ExpressMath *Pub_ExpressMath;
Pub_ExpressMath = (TPub_ExpressMath *)GetProcAddress(MathDLL,"Pub_ExpressMath");
if (MathDLL != NULL)
{
Pub_ExpressMath(Express.c_str(),Result,true,1);
Express = String(Result);
Label1->Caption = "结果="+Express; //这样会出错,为什么?
ShowMessage(Result); //正确Show出
}
}
各位老大帮看下,谢谢