C#调用ActiveX DLL

Crystalzhou 2009-07-16 10:53:02
1、用VB6写了个dll Test.dll
2、C#程序A 引用Test.dll,同时生成了一个Interop.Test.dll
3、去掉Test.dll引用
4、动态调用 Test.dll
//取得当前路径
string dllPath = GetAssemblyPath();

//com注册 (难道在这注册不行吗)
System.Diagnostics.Process.Start("regsvr32.exe", " /s " + dllPath + "Test.dll");

Assembly ddvb = Assembly.LoadFrom(dllPath + "Interop.Test.dll");

//获取类型
Type ddtype = ddvb .GetType("Test.GoodVbClass");

//获取方法
MethodInfo method = ddtype .GetMethod("SayHello");

//生成对象
object o = Activator.CreateInstance(ddtype , null);

//调用方法
Object reslt = method.Invoke(o, new object[] { “ASS”});


在调试的时候,运行正常,可能是Test.dll也是在本机生成的原因
但是把生成的EXE和dll放到别的机器上就不行了,
“检索Com类工厂中CLSID胃{20……省略}的组建时失败,原因是出现以下错误:80040154”

只剩下10分了,稍后补!
谢谢
...全文
104 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
一般是用dllimport属性来调用的吧,如这样的形式:
[DllImport("Test.dll ", EntryPoint = "testMethod", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern string testMethod(string a);
Crystalzhou 2009-07-16
  • 打赏
  • 举报
回复
UP,希望遇到的或是了解的朋友,帮忙解惑

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧