作者:静待花开0088 | 来源:互联网 | 2023-09-15 05:56
从自己的C#DllinProgress4GL创建COM-Object我想知道如何从我自己的C#DLL创建一个Com-Object。我在C#中创建了以下类:usingSystem;u
从自己的C#Dll in Progress 4GL创建COM-Object
我想知道如何从我自己的C#DLL创建一个Com-Object。
我在C#中创建了以下类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace ProgressNet { [Guid("a9b1e34d-3ea3-4e91-a77a-5bcb25875485")] [ClassInterface(ClassInterfaceType.AutoDual)] [ComVisible(true)] [ProgId("ProgressNet.Server")] public class NetServer { public NetServer() {} [DispId(1)] public string GetString() { return "Some String"; } } }
在属性中,我检查了注册COM Interop。
然后我用regasm注册了DLL。
regasm G:ProgressTestAppProgressNet.dll /tlb:G:ProgressTestAppProgressNet.tlb /codebase
然后我尝试了Progress 4GL这段代码:
DEFINE VARIABLE NetServer AS COM-HANDLE. CREATE "ProgressNet.NetServer" NetServer. MESSAGE NetServer:GetString().
但后来我得到“ProgressNet.NetServer的自动化服务器没有正确注册”..
有什么建议? ?
如果有人还在读这个,答案结果很简单:以下行是错误的。
MESSAGE NetServer::GetString().
它应该是
MESSAGE NetServer:GetString().
该错误发生在create
com-handle语句中。 它应该是create "ProgressNet.Server" NetServer.
而不是ProgId
调用指定的"ProgressNet.NetServer"
。
我提到你用regasm
注册了DLL,并使用下面的代码进行测试,它工作正常。
上述就是C#学习教程:从自己的C#Dll in Progress 4GL创建COM-Object分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—编程笔记
def var ch as com-handle no-undo. create "ProgressNet.Server" ch. MESSAGE ch:GetString() VIEW-AS ALERT-BOX INFO BUTTONS OK.