欢迎访问 Lu程序设计
C/C++使用Lu扩展动态库
1 说明
要演示本文的例子,你必须下载Lu64脚本系统。本文的例子需要lu64.dll、lu64.lib、C++格式的头文件lu64.h,相信你会找到并正确使用这几个文件。
用C/C++编译器创建一个控制台应用程序,复制本文的例子代码直接编译运行即可。
2 关于Lu扩展动态库的使用
Lu扩展动态库只有一个输出函数:
//Lu扩展动态库唯一的输出函数;
//hLu:Lu64.dll的句柄;iInit!=0:初始化动态库,iInit=0:释放动态库;
//me:指向任意数据的指针,可用于验证用户能否使用该库,为了方便验证,约定该指针指向一个wchar_t类型的字符串。
//iInit!=0时,返回值LuDll=0:初始化失败;LuDll=1:初始化成功;返回值LuDll=2:初始化成功,仅注册一些常量,初始化完成后可卸载该库。
//iInit=0时,返回值LuDll=0:释放失败;LuDll=1:释放成功;
extern "C" int _stdcall LuDll64(HINSTANCE
hLu,int iInit,void *me)
{
.
.
.
if(iInit) //初始化动态库
{
.
.
.
return 1;
}
else //释放动态库
{
.
.
.
return 1;
}
}
所以加载Lu扩展动态库后,调用函数LuDll64(hLu, 1, me)即可完成初始化工作,使用完该库后,调用函数LuDll64(hLu, 0, NULL)即可完成释放工作。
3 代码
#include <windows.h> #include <iostream> #include "lu64.h" #pragma comment( lib, "lu64.lib" ) using namespace std; void main(void) { void *hFor; //表达式句柄 luINT nPara; //存放表达式的自变量个数 LuData *pPara; //存放输入自变量的数组指针 LuData Val; //存放表达式的值 luINT ErrBegin,ErrEnd; //表达式编译出错的初始位置和结束位置 int ErrCode; //错误代码 wchar_t ForStr[]=L"Add(1.1,2.2)+Sub(6.6,5.5)+pi"; //字符串表达式 HINSTANCE hLu; //核心库lu64.dll句柄 HINSTANCE hDllExample; //扩展库DllExample.dll句柄 luDll pluDll; //Lu扩展库唯一的输出函数 if(!InitLu()) return; //初始化Lu hLu=GetModuleHandle(L"lu64.dll"); //获得核心库lu64.dll的句柄 hDllExample=LoadLibrary(L"DllExample.dll"); //加载动态库DllExample.dll if(hDllExample) { //获得扩展库DllExample唯一的输出函数 pluDll=(luDll)GetProcAddress(hDllExample,"LuDll64"); if(pluDll) { if(!pluDll(hLu,1,NULL)) //初始化失败 { FreeLibrary(hDllExample); //释放动态库DllExample.dll hDllExample=NULL; } } } ErrCode=LuCom(ForStr,0,0,0,hFor,nPara,pPara,ErrBegin,ErrEnd); //编译表达式 if(ErrCode) { cout<<"表达式有错误!错误代码:"<<ErrCode<<endl; } else { Val=LuCal(hFor,pPara); //计算表达式的值 if(Val.BType==luStaData_double) cout << *(double *)&(Val.x) << endl; } if(hDllExample) { pluDll(hLu,0,NULL); //释放Lu扩展库 FreeLibrary(hDllExample); //释放动态库DllExample.dll } FreeLu(); //释放Lu }
运行结果:
7.5416
4 函数说明
本例用到了Lu的4个输出函数:初始化Lu的函数InitLu,释放Lu的函数FreeLu,编译表达式的函数LuCom、 计算表达式的函数LuCal。从这里查看这些函数的说明:Lu编程指南。
5 难点分析
要演示本文的代码,需要加载上篇教程代码生成的DllExample.dll,参考上一篇教程用C/C++设计Lu扩展动态库。
在Lu64脚本系统中,已经实现的主要Lu扩展库参考Lu脚本系统说明,源代码下载:lu2code.zip,用户可根据需要加载使用它们。
6 其他
你可能注意到了,我的联系方式就在下面,如有不明之处或有什么建议,可随时与我进行联系。
版权所有© Lu程序设计
2002-2021,保留所有权利
E-mail: forcal@sina.com
QQ:630715621
最近更新:
2021年05月23日