文档详情

pb调用vc写的动态链接库文件.docx

发布:2017-05-17约字共2页下载文档
文本预览下载声明
pb调用vc写的动态链接库文件 PB是一种面向C/S方式的数据库应用程序的开发工具,PB拥有数据窗口、嵌入式SQL语句等技术,在开发数据库应用程序时显得特别方便。但在涉及到系统底层的一些功能时,PB本身提供的功能就有些不尽如人意。因为Windows操作系统提供给用户的接口是C语言函数形式,而VC在调用系统底层功能方面,从编程角度来讲就要方便得多。VC还有许多PB所不具备的优点,比如数据结构表达能力强,实现复杂算法的程序相对容易开发,运行速度快等。此外,不少外围设备的驱动程序提供的也是C接口。若能将这两种语言结合起来使用,充分发挥它们各自的优点,将会大大提高开发效率、增强应用程序的功能。 动态链接库简述 动态链接库(Dynamic-Link Library)简称DLL,是基于Windows系统的程序设计中的一个非常重要的组成部分。使用DLL的优点是: 1. DLL的动态连接不是将库代码拷贝,而是在程序中记录函数的入口点和接口,在程序执行时才将库代码装入内存。如果有多个程序使用相同的DLL,也只需将DLL在内存中装载一次,以节省内存的开销。 2. DLL是基于Windows系统的程序模块,不仅包含可执行代码,还可包含数据与各种资源,扩大了库文件的使用范围。 3. 对于一个大型的、不断更新的应用程序,可将许多重复的功能编写成DLL,用主程序调用,这样既能减少开发的工作量,又能提高访问速度。 4. DLL丰富了PowerScript语言的编程能力,可以使用PowerScript函数集之外的函数。 5. DLL独立于编程语言,大多数Windows编程环境都允许主程序调用DLL中的函数。可以用VC、PB、VB、汇编语言等建立DLL,然后在不同语言开发的应用程序中调用它。 一个实例 1. 用VC创建DLL 在VC 6.0中可以用“MFC AppWizard”自动生成“Win32 DLL”和“MFC AppWizard DLL”。启动VC之后,从“File/New”菜单项,选择“New”对话框中的“Projects”标签,选择新项目为“MFC AppWizard(DLL)”,可输入工程名为dl-lwl,然后点击“OK”按钮,弹出选择DLL类型对话框后,再选择DLL类型为:Regular DLL using shared MFC DLL,最后点击“Finish”按钮。这样,AppWizard将自动创建一个包含基本要素的DLL框架,接着手工添加相关的代码。 2. 打开dl-lwl.cpp文件,添加如下函数 extern “C”_declspec(dllexport) int _stdcall output_number(int x) { int y; char msg[20]; y=x 2; sprintf(msg, “计算结果:%o ! ”, y); ::MessageBox(NULL, msg, “信息”, MB_OK); return 0; } 以上声明了函数output_number(),输入参数为一个整型数,作移位运算后,用对话框将计算结果显示出来。 接着打开dl-lwl.def文件,在EXPORTS下输入函数说明,文件内容如下: LIBRARY “pbdll” DESCRIPTION ‘pbdll Windows Dynamic Link Library’ EXPORTS ; Explicit exports can go here out_num @1 最后编译生成动态链接库dl-lwl.dll。 3. 在PB中调用VC创建的DLL函数 为了在PB应用程序中调用存放在动态链接库dl-lwl.dll中的函数output_number(),需要事先声明。在声明时必须明确: ● 函数的作用范围,全局声明可使该函数用于整个应用,局部声明仅使该函数在对象的脚本中有效; ● 必须指明函数返回的数据类型、传递参数的个数和类型,并将存放该函数的动态链接库的名字告诉PB。 声明完成后,应用程序可以调用函数output_number(),调用该函数的代码与调用任何标准的PowerScript函数类似,区别就在于: 该函数存放在动态链接库中,调用时动态链接库装入内存,然后函数执行。对PB中被调用的函数使用声明: Function int output_number(int irow) LIBRARY “dl-lwl.dll” 在PB中调用函数output_number()的代码如下: int irow,retcode irow=dw_1.rowcount() retcode=out_num(irow) 装入动态链接库(DLL) 当PB应用程序调用外部函数时,动态链接库
显示全部
相似文档