【问题标题】:Use C# created DLL in PowerBuilder 12.5.2在 PowerBuilder 12.5.2 中使用 C# 创建的 DLL
【发布时间】:2015-12-30 13:10:48
【问题描述】:

我创建了一个针对 .Net Framework 4.5.2 的简单 C# 类库,其中一个类使用 Visual Studio 2015 企业版。

示例代码:

namespace PwdEncryptor
{
    public class Class1
    {
        public string Encrypt (string actualPassword)
        {
           return String.Concat(actualPassword, "Encrypt");
        }
    }
}

我想在 另一个系统上从我的 powerbuilder 代码中使用它。

这样做的目的是为了获得密码加密的通用代码。

问题:

我在我的 powerbuilder 代码中使用它,在全局实例变量中声明如下:

函数字符串加密(字符串实际密码)库“PwdEncryptor.dll”

在我写的应用程序的打开事件中:

string pwd
pwd = Encrypt("XYZ")

当我运行代码时,我收到一条消息说“未知函数名”

为了克服这个问题,我尝试了here 中提到的解决方案。我采取的一个小偏差是,而不是在同一系统上执行 powerbuilder,我导出了创建并导入到存在 powerbuilder 代码的其他系统的注册表。在这种情况下,我得到的错误是 Application 对象的 Open 事件中的错误运行时函数引用。

有没有办法可以使用我创建的 DLL?我错过了什么吗?请指教。

【问题讨论】:

  • DLL 是否在您运行 PowerBuilder 代码的系统上注册?
  • @MattBalent:是的,它已在注册表中注册。它从我在问题中提到的链接中的示例解决方案中注册为我系统上构建的一部分。仅供参考,它在 HKEY_CLASSES_ROOT 下注册。我导入此注册表,然后将其导出到具有 PowerBuilder 代码的系统上。

标签: c# .net visual-studio-2015 powerbuilder password-encryption


【解决方案1】:

您必须将 DLL 公开为 COM 可见。详细信息在this answerthis other

【讨论】:

  • 感谢您的回复。我已经按照我在问题中提供的链接中的建议使 dll COM 可见。也许你可以看看链接,然后告诉我是否做错了什么。
【解决方案2】:

我已经解决了。

我应该使用 RegAsm.exe

注册我的 C# dll,而不是从我的系统中导出注册表并在包含 powerbuilder 代码的系统上导入它

一旦注册了 DLL,PowerBuilder 代码就可以使用 C# 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多