- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC使用MTParse数学表达式分析器
VC++使用MTParse数学表达式分析器MTParse是一种能够实现在动态运行时进行复杂数学表达式灵活运算的C++开源库MTParser_src.zip:MTParse开发库源码,同时还包含了一些可用的功能扩展插件,您也可以到相关网站下载最新版本。
MTParser_demo.zip:这是作者提供的Demo程序MTParserLib.rar:这其中包括了VC++各个编译器版本集成MTParse时需要引入的LIB库,注意使用时必须根据编译器版本的不同选择相应的LIB库文件。同时您也可以通过您所使用版本的编译器编译MTParse源码以生成您想要的LIB文件。
include.rar:这是在使用MTParse基本功能时需要包含的一些必要头文件,这些文件也可以从MTParser_src.zip中获取。
MTParseV6Demo.rar:Visual Studio 6.0引入MTParse的Demo程序。
MTParseV02Demo.rar:Visual Studio 2002引入MTParse的Demo程序。
MTParseV05Demo.rar:Visual Studio 2005引入MTParse的Demo程序。
MTParseV08Demo.rar:Visual Studio 2008引入MTParse的Demo程序。
MTParse与各VC++编译器版本集成使用介绍
下图是经实际测试,MTParse在各版本编译器环境中的兼容情况:
VC++编译环境/测试项 ANSI UNICODE 32Bits 64Bits 6.0 Y NA Y NA 2002 Y N Y NA 2005 Y Y Y NA 2008 Y Y Y Y [注]:Y表示能编译通过且成功运行。N表示无法编译通过或无法运行。NA表示不涉及的项目,可以忽略。Visual Studio 2010这次没有进行测试,理论上也是能够全部支持,如果需要,请自行予以验证。
下图是测试Demo运行效果:
下面,结合本人实际测试结果,简单介绍下如何在VC++各个版本中引入MTParse实现数学表达式动态计算加以说明。
1、在需要引入MTParse的VC++工程中,进入【工程属性】-【C/C++】-【代码生成】页修改【运行时库】选项。一般的,Release版本设置为多线程DLL,Debug版本设置为多线程调试DLL。通常情况下,编译器默认设置不需要更改。
2、在工程中包含如下头文件,且将include.rar中.h文件添加到工程指定目录中,如本例中是将MTParse相关的所有.h文件添加到和工程文件同级的MTParserLib目录中。
#include ../MTParserLib/MTParser.h
#include ../MTParserLib/MTParserLocalizer.h
3、在适当位置(通常在staafx.h文件中)加入如下代码,将LIB库引入工程中,并在指定目录中包含所需的四个版本LIB文件(注意这四个LIB文件必须是由与当前工程一致VC++版本编译生成的)。如下这段代码会根据当前工程Debug/Release和ANSI/Unicode设置,选择引入合适的LIB库。
#ifdef _DEBUG
#ifdef _UNICODE
#pragma comment(lib, ../MTParserLib/lib/MTParserUd.lib)
#else
#pragma comment(lib, ../MTParserLib/lib/MTParserd.lib)
#endif
#else
#ifdef _UNICODE
#pragma comment(lib, ../MTParserLib/lib/MTParserU.lib)
#else
#pragma comment(lib, ../MTParserLib/lib/MTParser.lib)
#endif
#endif
4、以上步骤完成后,就可以开始在项目的合适位置使用MTParse了。关于MTParse的所有功能使用方法,请参见附带的相关文档。
MTDOUBLE x, y, z;
MTParser parser;
CString strFormula;
m_ctrFormula.GetWindowText(strFormula);
if (strFormula.IsEmpty())
{
AfxMessageBox(_T(请输入含有x、y或者z变量的方程式!));
return;
}
parser.defineVar(_T(x), x);
parser.defineVar(_T(y), y);
parser.defineV
文档评论(0)