我想知道如何從我自己的C#DLL創建COM對象。從自己的C#DLL創建COM對象4GL
我在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互操作。
然後我用regasm註冊了DLL。
regasm G:\ProgressTestApp\ProgressNet.dll /tlb:G:\ProgressTestApp\ProgressNet.tlb /codebase
然後,我在進步4GL嘗試這種代碼:
DEFINE VARIABLE NetServer AS COM-HANDLE.
CREATE "ProgressNet.NetServer" NetServer.
MESSAGE NetServer:GetString().
但後來我得到 「爲ProgressNet.NetServer自動化服務器未正確註冊」 ..
有什麼建議? :)
錯誤消息非常明確。你如何使用regasm的描述不是。 – 2012-07-27 12:49:43
regasm G:\ ProgressTestApp \ ProgressNet.dll /tlb:G:\ProgressTestApp\ProgressNet.tlb – RaphaelH 2012-07-27 14:13:48
添加/ codebase選項,因此您不必將程序集放入GAC。 – 2012-07-27 16:17:19