FORCAL扩展动态库
来源:互联网 发布:后花园软件下载免费 编辑:程序博客网 时间:2024/06/05 17:05
欢迎访问 Forcal数学软件 主站 我要安家站 6to23站 给我留言:csdn blog 百度空间
FORCAL扩展动态库
往Forcal中添加常量、函数或其他任意类型的数据是非常方便的。为了便于函数和数据共享,常将函数和数据封装到动态库中,以动态库的形式向Forcal添加,这种动态库称Forcal扩展动态库。Forcal扩展动态库只需要一个输出函数:
//Forcal扩展动态库唯一的输出函数;
//hFC:Forcal.dll的句柄;bInit=true:初始化动态库,bInit=false:释放动态库。
//bInit=true时,返回值ForcalDll=0:初始化失败;ForcalDll=1:初始化成功;
//bInit=true时,返回值ForcalDll=2:初始化成功,仅注册一些常量,初始化完成后可卸载该库。
//bInit=false时,返回值ForcalDll=0:释放失败;ForcalDll=1:释放成功;
extern "C" int _stdcall ForcalDll(HINSTANCE hFC,bool bInit)
{
.
.
.
if(bInit) //初始化动态库
{
.
.
.
return 1;
}
else //释放动态库
{
.
.
.
return 1;
}
}
可以看出,虽然Forcal扩展动态库只有一个输出函数,但该函数接受了主调程序加载的Forcal.dll的句柄,因而可以完成任意复杂的功能。为了应用程序的安全性,在Forcal扩展动态库中禁止使用InitForcal(初始化FORCAL)和FreeForcal(释放FORCAL)这两个函数。
如果在动态库中启动了另一线程,要注意多线程程序中使用Forcal函数的原则,即:除了GetRunErr()、TestRunErr()和SetRunErr()三个函数外,其余的函数只能在单线程中使用(不允许两个及两个以上的线程同时运行这些函数)。为此,约定用pUseForcal=SearchKey("UseForcal",FC_Key_User); 获得一个函数指针进行多线程之间互斥使用Forcal的通讯,该函数可在主程序或Forcal扩展动态库中定义,函数说明如下:
//(1)iUse=1时,表示要申请使用Forcal,若函数返回值 UseForcal=0:申请成功;UseForcal=1:申请不成功,
//其他线程正在使用Forcal,稍后再进行申请;UseForcal=-1:申请不成功,表示应用程序要释放Forcal,
//因此要做好退出前的准备工作。
//(2)iUse=2时,表示要申请使用Forcal,如果其他线程正在使用Forcal,函数不返回,进行等待,直至申请成功。
//若函数返回值 UseForcal=0:申请成功;UseForcal=-1:申请不成功,表示应用程序要释放Forcal,
//因此要做好退出前的准备工作。
//(3)iUse=0时,表示要归还Forcal的使用权,函数返回值无意义。
//(4)iUse=3时,设置活动标志,表示Forcal运行正常,函数返回值无意义。
//(5)iUse=4时,取消活动标志,表示Forcal运行处于不可控制阶段,函数返回值无意义。
//(6)iUse=5时,查询活动标志,UseForcal=0:运行正常;UseForcal=1:运行不正常。
//注意:Forcal是极为重要而有限的资源,用完后要及时归还。
extern "C" int _stdcall UseForcal(int iUse);
在主调程序或任一个Forcal扩展动态库中均可以设置一个函数void _stdcall DllMessage(char *);。然后将该函数的地址用InsertKey("DllMessage",FC_Key_User,DllMessage,NULL,v)传送给Forcal。约定所有Forcal扩展动态库都使用该函数发送信息。任一线程均可根据需要设置该函数。
在设计Forcal扩展动态库时,要遵循谁注册函数和数据谁释放的原则。
在加载和卸载Forcal扩展动态库时,要遵循先进后出的原则,即先加载的后进行卸载。
可以用C/C++、delphi、FORTRAN等任一种高级语言设计Forcal扩展动态库。
本软件包中的“QuitFc.dll”、“FcConst.dll”和“Example.dll”三个动态库是用VC++6.0设计的。用VC++6.0新建一个“Win32 Dynamic-Link Library”工程,将相应的源程序文件、模块定义文件和头文件Forcal7.h添加到该工程编译即可。
QuitFc.dll:用于退出Forcal运行时的无限循环。源程序文件和模块定义文件在文件夹“dll_QuitFC”中。
FcConst.dll:用于向Forcal添加常量,添加完常量即可卸载该库。源程序文件和模块定义文件在文件夹“dll_FcConst”中。
Example.dll:向Forcal注册了几个函数。源程序文件和模块定义文件在文件夹“dll_Example”中。
由delphi生成的演示程序“Project1.exe”可以加载这三个动态库。
版权所有© Forcal数学软件 2002-2007,保留所有权利
E-mail: forcal@sina.com QQ:630715621
最近更新: 2007年01月10日
- FORCAL扩展动态库
- FORCAL扩展动态库
- Forcal扩展动态库之 OpenFcGl
- Forcal扩展动态库之 FcData
- 设计由Forcal支持的软件,设计Forcal扩展动态库
- FORCAL扩展动态库之Windows窗口库FcWin
- FORCAL参数优化动态库FcOpt
- 极限测试之Matlab与Forcal动态内存管理效率
- Lu扩展动态库
- 通用字符串表达式编译运行库FORCAL V7.0 用户指南
- 通用字符串表达式编译运行库FORCAL V7.0 简介
- 通用字符串表达式编译运行库FORCAL V7.0
- 极限测试之Matlab与Forcal动态生成函数的效率
- 使用MFC扩展动态链接库
- C#应用程序调用MFC扩展动态库
- MFC扩展动态连接库(dll)版本
- Lu系统扩展动态库LuSystem
- mastudio 扩展(获取动态链接库)
- 调试asp的组件时,不需重启机器的方法
- Tapestry入门及进阶一
- Tapestry入门及进阶二
- Tapestry入门(译作)
- Java异常处理之陋习展播
- FORCAL扩展动态库
- win2k安装若干问题
- 安装Win XP后的五个设置技巧
- 使用杀毒软件有“五大禁忌”
- SOLARIS 7 FAQ
- 检测系统是否被入侵者安装了rootkit
- 跨域名的Cookie实现---简单另类的实现方法
- VB串口使用心得两则
- C++语言实战技巧(1)