Dab*_*rnl 6 .net vb6 com-interop
我用这个简单的类创建了一个COM-interop .dll:
using System.Runtime.InteropServices;
namespace ClassLibrary1
{
[ComVisible(true)]
[Guid("795ECFD8-20BB-4C34-A7BE-DF268AAD3955")]
public interface IComWeightedScore
{
int Score { get; set; }
int Weight { get; set; }
}
[ClassInterface(ClassInterfaceType.None)]
[Guid("9E62446D-207D-4653-B60B-E624EFA85ED5")]
public class ComWeightedScore : IComWeightedScore
{
private int _score;
public int Score
{
get { return _score; }
set { _score = value; }
}
private int _weight;
public int Weight
{
get { return _weight; }
set { _weight = value; }
}
public ComWeightedScore()
{
_score = 0;
_weight = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
我使用以下命令注册:C:\ WINDOWS\Microsoft.NET\Framework\v4.0.30319\regasm C:\ ComClasses\Classlibrary1.dll/tlb:Classlibrary1.tlb
最后,我成功地添加了对.dll的引用,之后VB6给了我关于对象的intellisense.
Private Sub Form_Load()
Dim score1 As ComWeightedScore
Set score1 = New ComWeightedScore
score1.Score = 500
End Sub
Run Code Online (Sandbox Code Playgroud)
在线Set score1=new ComWeightedScore上引发异常自动化错误.
它几乎不比这简单......错误在哪里?!
您忘记了Regasm.exe命令行中的/ codebase选项.
没有它,你必须强化程序集,并使用gacutil.exe将其放入GAC.在客户端机器上的好主意,只是不在你的机器上.
| 归档时间: |
|
| 查看次数: |
6177 次 |
| 最近记录: |