PBNI整理版本剖析.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PBNI 是Powerbuilder 的本机扩展,是很强大的东东,最近因为工作需要,稍作了点研究,希望对未做过PBNI的朋友,有所帮助。 用最简单的的话来讲,(不准确),就是Java ,C++ 里可以加载PB的虚拟机,利用PB的对象,语言,主要是利用PB在某些方面的强大功能,让他们能很好的结合。PB 安装目录 SDK下的文件非常重要,要阅读下PB自带的帮助文档。 Powerbuilder9 的版本只支持 vs6,10.5的最高支持到VS2005 ,如果要想让PBNI 支持到VS2008,并且集成到appwiz里,需要手动来做。%Sybase\Pb105\PowerBuilder 10.5\SDK\PBNI\Wizards\VCWizards\PBNIWizard8,此目录下的deploy.bat 文件有时执行不一定成功,手动就可以,按照里边的步骤做,做完后,%Sybase\Pb105\PowerBuilder 10.5\SDK\PBNI\Wizards\VCProjects 8.0,这个目录下的文件PBNIWizard.vsz 文件用UE打开,将8.0 改为9.0 ,再复制到相应目录,就可以在VS2008里用向导创建PBNI工程了。 还有一点要提醒的是,一定要使用向导来创建PBNI,否则很容易挂哦 PowerBuilder 9开发技术讲座— PowerBuilder Native Interface(PBNI)PowerBuilder 9现在对于其他开发语言的支援,有了全新的突破,在以往使用PowerBuilder开发程式时,要和C++或是Java程式互通有无是有一些折衷的办法,但是总是没有办法做到简易而且全面性的支援。现在只要透过PowerBuilder 9的PBNI技术,就可以让PowerBuilder的程式呼叫Java,或是在一个C++的程式中引用PowerBuilder NVO物件函数。 以往的PowerBuilder程式只能够透过外在函数呼叫的方式来存取C/C++的函数,但在PowerBuilder 9.0之中扩增了一项强而有力的介面-「PowerBuilder Native Interface」,简称PBNI。透过PBNI的开发方式,PowerBuilder开发人员不仅可以使用物件导向的方式来存取C/C++函数,而且还可反向地让C/C++程式呼叫PowerBuilder之中的物件,达到应用程式的整合。更甚者,在藉由JNI与PBNI两者的结合,Java应用程式也可双向地与PowerBuilder程式沟通。 何谓PBNI 在谈什么是PBNI之前,我们先来谈谈下面三个问题: 1.开发人员有办法用PowerBuilder程式呼叫C或是C++的程式吗? 2.开发人员有办法用PowerBuilder程式呼叫一些外部元件像是Java EJB元件、 Web Service元件、Java Class程式等诸如此类的元件吗? 3.开发人员有办法用反过来,用C或是C++呼叫已经使用PowerBuilder开发好的程式吗? 上述三个问题,在过去的PowerBuilder其实都可以做到某种程度的地步,只是都有些问题。传统上使用PowerBuilder开发上述的程式时,如果要呼叫C或是C++ 的程式,是可以使用宣告外部函数的方式来使用一个已经撰写好的DLL函数, 例如: FUNCTION ulong GetSysColor (int index) LIBRARY USER32.DLL” FUNCTION boolean sndPlaySoundA (string SoundName, uint Flags) LIBRARY WINMM.DLL 可是如果是下面的程式呢: BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam); 这个可是个大问题了,因为这个Windows DLL Function中会用到所谓的「Callback」 函数的技术,所谓的Callback Function指的是今天有A和B两个物件,在程式中A物件呼叫B物件的Function,而在该B物件的Function又会回头呼叫A物件的其他Function,这就叫「Callback」。在PowerBuilder呼叫C的Function后,在这个C的Function中要再回头呼叫PowerBuilder的函数是不可能用引用外部函数的方式来达到这个目地的。除了Callback Function使用困难之外,使用外部函数也有资料型态的限制,以及没有办法使用物件导向的方式开发等种种的困难及问题。 再来谈谈PowerBuilder呼叫外部的元件的方法,在以前能够让PowerBuilder呼叫EJB元件,就只

文档评论(0)

ee88870 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档