小编典典

带有Powerbuilder生成的DLL的SQL Anywhere中的外部“ ello world”功能

sql

我在PowerBuilder.NET Hello World中 创建了一个函数。从PowerBuilder实用程序以C#生成的项目编译为
Helloworld.dll 。在Helloworld中,我制作了非可视的 n_cst_helloworld
。在非可视内部,我创建了对象函数 of_hello() 。这些是我尝试在SQL Anywhere的外部函数中访问
Helloworld.n_cst_helloworld.of_hello() 时遇到的问题。

外部函数使用 CLR, 并且现在在 Interactive SQL中 被调用。

这是我正在尝试通过ASA在iSQL中启动的脚本:

ALTER PROCEDURE  "DBA"."ext_helloworld"()

EXTERNAL NAME

'helloworld.dll::Helloworld.n_cst_helloworld.of_hello( )'

LANGUAGE CLR

然后,我在iSQL中使用以下内容:

START EXTERNAL ENVIRONMENT CLR;

CALL ext_helloworld();

这给了我以下错误:

无法执行语句。过程’ext_helloworld’因未处理的异常’找不到方法’Helloworld.n_cst_helloworld.of_hello’而终止。

SQLCODE = -91

因此,我知道我的对象位于正确的文件夹中,并通过REGASM等进行了注册,否则它将给我以前见过的“找不到对象”错误。

我很困惑,因为似乎SQL
Anywhere知道对象n_cst_helloworld存在,但是它无法识别使用PowerBuilder.NET实用程序生成的方法。我不知道如何继续通过ASA使用此方法。

目前,我正在使用ASA 12,PB12,PB.NET,并且同时安装了3.5和4.0。


阅读 294

收藏
2021-04-28

共1个答案

小编典典

.NET部署如何工作


部署.NET项目时,PowerBuilder会将现有或新开发的PowerScript®代码编译到.NET程序集中。

在运行时,生成的.NET程序集使用.NET公共语言运行时(CLR)执行。PowerBuilder的.NET编译器技术与标准PowerBuilder客户端-
服务器应用程序中的P代码编译器一样透明。

部署PowerBuilder运行时文件

将PowerBuilder运行时DLL和.NET程序集部署到生产服务器或目标计算机的最简单方法是使用 PowerBuilder Runtime
Packager

工具。运行时打包程序将创建一个MSI文件,该文件将安装您选择的文件,注册所有自注册DLL,然后将.NET程序集安装到全局程序集缓存(GAC)中。


请参阅 完整的文档PB.NET运行时将
这里上的Sybase信息中心


部署清单

验证生产服务器和目标计算机是否满足运行从PowerBuilder Classic部署的.NET目标的所有要求。

所有.NET目标的清单

为了部署所有.NET目标类型(Windows窗体,Web窗体, .NET程序集 ,.NET Web服务),生产服务器或目标计算机必须具有:

  • Windows XP SP2,Windows Vista,Windows 2008或Windows 7操作系统.NET Framework 4.0
  • Microsoft Visual C ++运行时库msvcr71.dll,msvcp71.dll,msvcp100.dll,msvcr100.dll和Microsoft .NET活动模板库(ATL)模块atl71.dll
  • 全局程序集缓存(GAC)中的PowerBuilder .NET程序集
  • 系统路径中的PowerBuilder运行时动态链接库
  • 请参阅部署PowerBuilder运行时文件。
2021-04-28