无法访问C#COM库

时间:2015-03-17 11:34:30

标签: c# web-services com

我正在为FoxPro构建一个带有.NET 4框架的COM类库。库的主要代码非常小:

[ComVisible(true)]
[Guid("054fbf26-6d37-4d84-a732-fc49d77eeb21")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IFingerPrintEvents
{
    [DispId(1)]
    void OnFinger(int id);
}

[ComVisible(true)]
[Guid("7d07c9f9-a852-4287-9d7c-f5a9a6bdcf7b")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IFingerPrintDll
{
    [DispId(1)]
    string StartEnrollment();
    [DispId(2)]
    string Open(string connstring);
}

[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(typeof(IFingerPrintEvents))]
[Guid("D9755E64-49A5-44ED-971F-64621DBEEEDF")]
[ProgId("FingerPrint.dll")]
public class FingerPrintDll : ServicedComponent, IFingerPrintDll
{
...(Implements IFingerPrintDll and events from IFingerPrintEvents)...
}

我在x86中构建了所有内容,在程序集信息中将COM设置为true并签署了库。我可以使用/ tlb和/ codebase标签在RegAsm中注册它,但是当我尝试在FoxPro中使用CREATEOBJECT()时,它会显示“未知的COM状态代码.OLE错误0x80004003”。当我尝试将其添加到C#app(进行测试)并尝试使用GetTypeFromProgID,然后使用Activator.CreateInstance启动时,它会显示“对象引用未设置为对象的实例。”。当我尝试通过引用添加COM库时也是如此。它在代码中没有显示错误,但是当我启动时它显示相同的错误。 我在C#上做了一次COM库,它在foxpro和C#都有效,但现在的主要区别是我的库通过服务引用使用Web服务。也许那里有问题?所有回复都表示赞赏。

更新

Okey,我的不好,因为使用了未初始化的对象,我的构造函数中有null引用异常...愚蠢等级9000

0 个答案:

没有答案