在 PowerBuilder 12.5.2 中使用 C# 创建的 DLL

Use C# created DLL in PowerBuilder 12.5.2

我创建了一个简单的 C# class 库,目标是 .Net Framework 4.5.2,其中一个 class 使用 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")

当我 运行 代码时,我收到一条消息说 "Unknown function name"

为了克服这个问题,我尝试了提到的解决方案 here。我采取的一个小偏差是,我没有在同一系统上的 powerbuilder 中执行,而是导出了创建并导入到存在 powerbuilder 代码的其他系统的注册表。在这种情况下,我得到的错误是 Bad runtime function reference at line in Open event of Application object.

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

您必须将 DLL 公开为 COM 可见。 this answer and this other.

处的详细信息

我已经解决了。

与其从我的系统中导出注册表并将其导入到包含 powerbuilder 代码的系统中,不如使用 RegAsm.exe[=10= 注册我的 C# dll ]

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