教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> 编程基地 >> PB >> 在PB中使用VC++编制的DLL RSS订阅
处理 SSI 文件时出错
在PB中使用VC++编制的DLL
处理 SSI 文件时出错
一、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应用程序调用外部&&函数时,动态链接库装入内存。/Article/czxt/Index.html">操作系统会在如下位置查找动态链接库:

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

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

  五、 结束语

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

来源:十度教育
作者:
关键字:DLL
发表日期:2006-5-2 12:38:04

处理 SSI 文件时出错

上一篇:用PowerBuilder6.0建立B/S结构的应用程序   下一篇:在POWERBUILDER中使用WINSOCK控件的方法


2008-9-7 2:19:03
本文的相类似文章
  • DLL 應用 - 設計可抽換的模組
  • 用VB创建开始菜单快捷方式(无需其他DLL)
  • 动态嵌入式DLL木马发现与清除
  • 认清dllhost.exe病毒的本来面目
  • 用GET_DDL函数来拷贝DLL句法
  • 查找 Oracle 用户锁的DLL SQL
  • DLL木马揭秘
  • 防止入侵:DLL后门完全清除方法
  • 精华:Rundll32.exe文件详解
  • 无进程DLL木马开发思路与实现!
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com