`
wuhuizhong
  • 浏览: 686572 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

在PB中使用VC++编制的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框架,接着手工添加代码。

  打开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函数一样,区别在于:该函数存放在动态链接库中,调用它时,动态链接库装入内存,函数执行。

  下面是PowerBuilder中被调用函数的使用声明:

  Function int out_num ( int irow ) LIBRARY "pbdll.dll"

  在PowerBuilder中调用函数out_num()代码如下:

int irow,retcode
irow=dw_1.rowcount()
retcode=out_num(irow)
  四、 加载DLL

  当PowerBuilder应用程序调用外部函数时,动态链接库装入内存。操作系统会在如下位置查找动态链接库:

  (1)EXE文件运行的目录。
  (2)Windows的系统目录。

  如果没有找到DLL,应用程序将产生运行错误,显示一个对话框,见图1-2(略)。如果找到DLL,它就被映射到程序的内存空间。

  五、 结束语

  DLL为不同编程环境下的应用程序之间的连接提供了方便,节省了内存,提高了速度,同时也丰富了PowerScript语言的编程能力。

 

 

http://forum.csdn.net/SList/PB_API/

 

powerbuilder 控制USB摄像头

http://www.qqgb.com/Program/PowerBuilder/PBwindows/Program_259200.html

 

c与Pb数据类型怎样对应(纯usb ic卡开发)

http://www.wikl.net/APIdiaoyong/20100706/11747.html

 

飞天诚信下载中心

 

http://ftsafe.cn/download/

 

如何在PowerBuilder与DLL之间传递参数

http://sheng.iteye.com/blog/434680

PB串口通信代码-不用控件实现



 

分享到:
评论

相关推荐

    PB11.5创建DLL和调用示例_pb11添加新dll_PB11.5创建DLL和调用示例_

    6. **调用DLL**:在PB11.5中调用DLL有几种方式,比如使用`DLLFunction`或`DLLProcedure`对象,或者通过.NET Interop服务。需要提供正确的参数类型和数量,以及DLL的完整路径。 压缩包中的`cuseddll`可能是创建的DLL...

    VC++生成DLLVC++生成DLL

    确保没有编译错误,这样就成功创建了一个可以在其他应用程序中使用的DLL。 #### 三、在PowerBuilder中调用VC++创建的DLL函数 要在PowerBuilder中使用上述创建的DLL,你需要进行以下步骤: 1. **函数声明**:在...

    使用PB编写DLL文件

    使用PB编写DLL文件 使用PB编写DLL文件 使用PB编写DLL文件 使用PB编写DLL文件

    PB调用C#写的dll文件

    标题中的“PB调用C#写的dll文件”指的是在PowerBuilder(PB)应用程序中使用C#编译的动态链接库(DLL)文件。这通常涉及到跨语言互操作性,允许不同编程语言之间的通信和功能共享。 C#是一种现代、面向对象的编程...

    Pb调用 c#编写的DLL

    在本文中,我们将探讨如何使用PowerBuilder (PB) 调用由C#编写的DLL。C#是一种现代化、类型安全且面向对象的编程语言,它具有丰富的库和功能,而PowerBuilder则是一款广泛用于构建客户端/服务器(MIS)系统的快速应用...

    pb9_base64_pb调用base64.dll_PB9base64_Base64.dll_glass8y6_pbbase64

    Base64是一种用于在网络上传输二进制数据的编码方式,它将二进制数据转化为可打印的ASCII字符,便于在不支持二进制传输的环境中使用。 在描述中提到的"pb9版本纯代码实现base64编码,不用dll",意味着这个项目或...

    PB调用C++DLL

    标题 "PB调用C++DLL" 涉及的关键知识点主要是在PowerBuilder(PB)环境中如何与C++编写的动态链接库(DLL)进行交互。PowerBuilder是一种强大的客户端/服务器应用程序开发工具,而C++是一种功能丰富的编程语言,广泛...

    PB生成二维码 MakeQRBarcode.dll

    本文将详细介绍如何在PB12.5环境中,利用MakeQRBarcode.dll动态链接库生成二维码,以及相关的实现步骤和技术要点。 MakeQRBarcode.dll是专为PB开发的二维码生成组件,它允许开发者通过简单的API调用来快速生成符合...

    pb9.0调用c#dll

    要在PB 9.0中调用C# DLL,我们需要遵循以下步骤: 1. **创建C# DLL**: 使用Visual Studio或其他C#开发环境,编写C#代码,并将其编译为.NET Framework兼容的DLL。确保你的C#方法具有适当的签名,即返回类型和参数...

    PB实现从DLL中提取图片

    标题中的“PB实现从DLL中提取图片”是指使用PowerBuilder(PB)这一编程工具,从动态链接库(DLL)文件中提取图像资源的过程。DLL文件是Windows操作系统中常见的一种库文件,它包含可由多个程序共享的代码和数据,...

    PB引用MD5的DLL

    标题中的“PB引用MD5的DLL”指的是在PowerBuilder(PB)开发环境中,开发者使用了一个外部的DLL(动态链接库)文件来实现MD5(Message-Digest Algorithm 5)哈希计算功能。MD5是一种广泛使用的加密散列函数,产生一...

    PB调用C++ DLL程序范例

    标题中的“PB调用C++ DLL程序范例”是指在PowerBuilder(PB)环境中通过动态链接库(DLL)调用C++编写的函数或方法。这通常涉及到跨语言交互,使得PB应用程序能够利用C++库的强大功能,比如高效计算、硬件访问或其他...

    PB12.5运行环境配置dll

    在PB12.5中,许多功能和组件的实现都依赖于特定的DLL文件,这些文件在编译时被链接到应用程序中,但并不实际包含在最终的可执行文件内。因此,如果目标计算机上缺少这些DLL,程序就无法找到必要的函数调用,从而导致...

    pb12.5使用系统DLL实现md5加密

    你需要打开`u_derek_md5.sru`文件,查看并理解其内部实现,以便在自己的项目中使用或修改。 总的来说,通过PB12.5自定义对象包装系统DLL实现MD5加密,是一种高效且灵活的方法。这种方法允许开发者在不离开Power...

    PB调用外部DLL

    在PB中,可以使用`Library`关键字来指定DLL的名称,然后使用`Function`关键字声明函数。例如,以下是一组与DLL `termb.dll` 相关的函数声明: ```pb function int CVR_InitComm(int Port) Library "termb.dll" // ...

    PB可用md5加密、des加解密DLL,附PB9调用例程

    通过分析"md5test.pbl"中的代码,你可以看到如何在PB中导入和使用DLL,以及如何传递参数进行加密解密操作。通常,这会涉及到声明外部函数,指定DLL、函数名、参数类型和返回值类型。然后在代码中调用这些函数,处理...

    PB调用C++写的dll(取指定分隔符分割后索引位置的子字符串).rar

    9. **PB调用DLL函数**:在PB中,我们可以使用`LoadLibrary`和`GetProcAddress`函数来加载和调用DLL中的函数。需要正确地转换参数类型并处理返回值。 总结起来,这个场景展示了如何通过PowerBuilder调用C++编写的DLL...

    pb调用myzip.dll的方法以及myzip.dll下载

    总之,使用PowerBuilder调用myzip.dll可以方便地在PB应用程序中集成文件压缩功能。遵循上述步骤,结合具体的myzip.dll函数接口和返回值含义,你可以轻松实现这一功能。不过,务必注意版权和许可证问题,确保合法、...

    pb调用qq截图dll

    首先,为了在PB中使用QQ截图DLL,你需要将`CameraDll.dll`文件复制到你的项目目录或系统路径下,确保PB能够找到它。然后,你可以选择使用`run`函数启动DLL,这会启动一个新进程并执行指定的函数。这种方法简单但可能...

    PB调用VC创建的DLL在MIS中的设计与实现1

    - 在VC++中编写实现Excel报表功能的代码,包括读取数据、设置Excel样式、保存文件等操作。 - 编译生成DLL文件,例如命名为`ExcelDLL.dll`。 ##### 2. PowerBuilder与DLL的交互 在PowerBuilder中,通过以下步骤实现...

Global site tag (gtag.js) - Google Analytics