把.net类转成COM类型出的问题
用以下两个命令编译都说TestEmailer.dll格式不正确。
tlbimp TestEmailer.dll /out:TestEmailerCOM.tlb
tlbexp TestEmailer.dll /out:TestEmailerCOM.tlb
具体异常如下:
RegAsm : error RA0000 : 保存导出的类型库时出错:I/O 错误。 (异常来自 HRESULT:0x80
028CA2 (TYPE_E_IOERROR))
现把整类内容考来,求高手指点错误。
using System;
using System.Collections;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Web;
using System.Security.Cryptography;
using System.Threading;
using System.Security;
using System.Runtime.InteropServices;
namespace TestEmailer
{
[Guid( "0bb13346-7e9d-4aba-9ff2-862e0105489a ")]
public interface ICSharp
{
[DispId(1)]
void sendmailMethod();
}
[Guid( "ba0a3019-f0d8-4406-8116-f80d5515c686 "),ProgId( "TestEmailer.MailM2 "),ClassInterface(ClassInterfaceType.None)]
class MailM2
{
public void sendmailMethod()
{
……………………
}
}
}
------解决方案--------------------给你修改一下试试:
1、程序修改:
namespace TestEmailer
{
[interfaceType(ComInterfaceType.InterfaceIsDual)]
public interface ICSharp
{
void sendmailMethod();
}
[ClassInterface(ClassInterfaceType.AutoDual)]
class MailM2:ICSharp
{
public void sendmailMethod()
{
……………………
}
}
}
2、创建类型库:
tlbexp TestEmailer.dll
执行后将生成TestEmailer.tlb,用COM Object Viewer看看。