我一直试图从C sharp应用程序调用vb6 dll,而不使用注册表。我想在使用它时使用dll的路径。我无法创建vb dll类的对象。请帮忙!我到目前为止编写的代码如下:
Assembly assem = Assembly.LoadFile("dll path");
Type classType = assem.GetType("classname");
MethodInfo method = classType.GetMethod("show"); //My methos is called show
method.Invoke(null,null); // I have to invoke the method using class object, which I am unable to create
答案 0 :(得分:6)
VB6 DLL是一个COM DLL。通常,您将注册DLL(在注册表中),然后从.NET项目中添加对VB6 DLL的引用。
这个MSDN article提供了从.Net应用程序使用免注册表COM的演练。
答案 1 :(得分:2)
MarkJ提及的VB6 DLL是一个COM Dll,它们通常需要使用regsvr32进行注册才能使用它们。
一旦注册,您可以像添加.NET dll一样添加对它的引用,即右键单击项目中的References,单击Add Reference,然后在窗口中选择COM选项卡并查找COM Dll名字。
然后你应该能够像.NET参考一样使用它 以下是如何使用Microsoft Excel的COM引用的示例 How to: Use COM Interop to Create an Excel Spreadsheet
如果您特别想要延迟绑定,那么您的dll仍然需要注册,但是您不需要手动添加引用,您可以使用Activator.CreateInstance()来获取COM对象的实例。
Calling COM component from C# using late binding
答案 2 :(得分:1)
假设方法show
位于dll的导出表中,请尝试使用DllImportAttribute
来调用show方法。