当前位置: 代码迷 >> PB >> pb调用dll文件?该怎么处理
  详细解决方案

pb调用dll文件?该怎么处理

热度:118   发布时间:2016-04-29 07:12:19.0
pb调用dll文件?
我之前没有接触过pb,所以对pb没有一点了解,现在接手一个任务用pb调用dll文件,这个dll文件是用C#编写的,内容很简单,就是有三个方法,一个是无返回值的,另两个是有返回值的。
任务需求:
1、用pb做一个窗体应用,窗体里有个button按钮,在button的client事件里调用dll文件的三个方法,因为第一个方法无返回值,也就不接收了,第二个,第三个分别用两个TextBox文本接收下,第三个方法有参数,随便写进一个参数就可以了,(任务需求要用6.5,我也希望好心人能用6.5,现在我安装了pb还不知道怎么用呢,但是用9.0或其他的也可以的)
2、写一个日志文件,一个简单得日志文件就可以了,在调用这个日志方法时,显示:服务已经启动...;成功后输入:已经执行完毕!(这个日志文件的存放目录为D盘,命名为:PBLog.txt)
3、dll文件的下载地址http://download.csdn.net/detail/l1160974051/4431042
写好后,把程序放到文件夹内我去下载
哪位好心人帮帮忙,谢谢啦···
------解决方案--------------------
在用PowerBuilder开发应用程序时,经常需要调用动态链接库DLL,本文介绍了动态链接库的基本特点,给出了VC++建立DLL以及在PowerBuilder中调用VC++创建的DLL函数的编程实例,实现了通过DLL连接PowerBuilder和VC++编制的不同程序的目的。  
一、   DLL概述:  
----   动态链接库(Dynamic-Link   Library),简称DLL,是基于Windows程序设计的一个非常重要的组成部分。使用DLL有许多优点:
(1)使用DLL的动态连接不是将库代码拷贝,只在程序中记录函数的入口点和接口,在程序执行时才将库代码装入内存,如果有多个程序使用相同的DLL,也只需将DLL在内存中装载一次,节省了内存开销。
(2)DLL是基于Windows的程序模块,它不仅包含可执行代码,还可以包含数据,各种资源,扩大了库文件的使用范围。
(3)对于一个大型的、不断更新的应用程序,可以将许多重复的功能写成DLL,用主程序调用,这样既减少了开发的工作量,又提高了访问速度。
(4)DLL丰富了PowerScript语言的编程能力,可以使用PowerScript函数集之外的函数。例如:用户可能编写图象处理系统来浏览文件并将其存放于数据库,该应用需使用浏览器,但用PowerScript语言未提供做这类工作的函数,为了操纵设备,需要与设备本身环境通信,该环境一般是厂商提供的动态链接库。
(5)DLL独立于编程语言,大多数WINDOWS编程环境都允许主程序调用DLL中的函数。即可以用VC++、VB、PowerBuilder、Delphi、汇编语言等建立DLL,然后在不同语言编制的应用程序中调用它。  
下面用一个实例说明通过DLL实现PowerBuilder程序和VC++程序之间的连接。
二、   VC++创建DLL  
----   在VC++5.0中可以用MFC   AppWizard自动生成Win32   DLL和MFC   AppWizard   DLL,启动VC之后,从File   
------解决方案--------------------
   New菜单项,选择New对话框中的Projects标签,选择新项目为MFC   AppWizard(dll),输入工程名pbdll,点击OK按钮,弹出图1-1所示对话框,选择DLL类型为:Regular   DLL   using   shared   MFC   DLL,然后点击Finish按钮。这样,AppWizard将自动创建一个包含基本要素的DLL框架,接着手工添加代码。  
图1-1   (略)自动生成的MFC   AppWizard   DLL
打开pbdll.cpp文件,添加如下函数:
extern   "C "   _declspec   (   dllexport   )
int   PASCAL   out_num(int   x)
{
        int   y;
        char   msg[30];
        y=x   >   > 2;
        sprintf(msg,   "计算结果:%o   !   ",   y);
        ::MessageBox(NULL,   msg,   "信息 ",   MB_OK);
        return   0;
}
以上声明了函数out_num(),输入参数为一个整型数,
作移位运算后,用对话框将计算结果显示出来。
接着打开pbdll.def文件,在EXPORTS下输入函数说明
out_num,文件内容如下:
LIBRARY   "pbdll "
DESCRIPTION   'pbdll   Windows   Dynamic   Link   Library '
EXPORTS
;   Explicit   exports   can   go   here
        out_num   @1
最后编译生成动态链接库pbdll.dll。
三、   在PowerBuilder中调用VC++创建的DLL函数  
----   为了在PowerBuilder应用程序中调用存放在动态链接库pbdll.dll中的函数out_num(),需要事先声明。在声明时要明确:
(1)函数的作用范围是全局的还是局部的。全局声明可使该函数用于整个应用,局部声明仅使该函数在对象的脚本中有效。
(2)必须指明函数返回的数据类型、传递参数的个数和类型,并将存放该函数的动态链接库的名字告诉PowerBuilder。  
----   声明完成后,应用程序可以调用函数out_num()   ,调用该函数的代码与调用任何标准的PowerScript函数一样,区别在于:该函数存放在动态链接库中,调用它时,动态链接库装入内存,函数执行。  
  相关解决方案