问题:动态加载嵌入资源(DLL)

问题描述

动态加载嵌入资源(DLL)http://www.lijialong.name/loaddll.html这个代码我转成VB代码结果过不去Returnm.Invoke(_object,ObjArray_Parameter)这一句提示:类型“System.Int32”的对象无法转换为类型“System.Byte”请教该如何解决呢?代码如下:PublicFunctionInvokeMethod(ByVallpFileNameAsString,ByValmyNameSpaceAsString,ByValclassNameAsString,_ByVallpProcNameAsString,ByValObjArray_Parameter()AsObject)AsObject'TryDimassemblyAsAssembly=assembly.Load(LoadDll(lpFileName))'加载指定的DLL程序集Dimtype()AsType=assembly.GetTypes()DimtAsTypeForEachtIntypeIft.Name=classNameThenIft.Namespace=myNameSpaceThenDimmAsMethodInfo=t.GetMethod(lpProcName)'加载需要调用的方法IfmIsNotNothingThenDim_objectAsObject=Activator.CreateInstance(t)Returnm.Invoke(_object,ObjArray_Parameter)'调用指定的方法,并返回结果(如果有)ElseSystem.Windows.Forms.MessageBox.Show("方法:"+lpProcName+"不存在!")EndIf'Else'System.Windows.Forms.MessageBox.Show("命名空间:"+myNameSpace+",类:"+className+"不存在!")EndIfEndIfNextSystem.Windows.Forms.MessageBox.Show("命名空间:"+myNameSpace+",类:"+className+"不存在!")'CatcheAsException'MessageBox.Show(e.Message)'EndTryReturnNothingEndFunctionPrivateFunctionLoadDll(ByVallpFileNameAsString)AsByte()DimassemblyAsAssembly=assembly.GetExecutingAssembly()TryDimstreamAsStream=assembly.GetManifestResourceStream(assembly.GetName().Name+"."+lpFileName)Dimbuffer(stream.Length-1)AsBytestream.Read(buffer,0,buffer.Length)stream.Close()ReturnbufferCatcheAsExceptionMessageBox.Show(e.Message)EndTryReturnNothingEndFunction

解决方案

解决方案二:
找到原因了,是数据类型不匹配,哈哈,结贴
解决方案三:
看样只能曾分了。win32好象有专门的资源DLL。
解决方案四:
嗯,看错误就知道是类型不匹配的。楼主可以看看别的资料,有专门的对应的资料的。C++,C#,VB.net,同样的东西,类型分别是什么
解决方案五:
调用DLL数据类型要注意,常在这反面出错

时间: 2024-09-20 05:13:36

问题:动态加载嵌入资源(DLL)的相关文章

动态加载dll,扩展系统功能

动态加载dll,主要是为了扩展功能,增强灵活性而实现的.主要通过xml配置,来获取所有要动态加载的dll,然后通过反射机制来调用dll中的类及其方法. 研究了一天,小有所得,写了一个简单的动态加载dll的通用模块,拿出来与大家分享一下: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; usi

C#中如何动态加载Dll

1.新建测试dll及方法,用vs2010新建winform程序,具体代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace reflect { public

C# 动态加载Dll

1.新建测试dll及方法,用vs2010新建winform程序,具体代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace reflect { public

Silverlight动态加载DLL

问题 今天手头的项目遇到一个问题,为了描述这个问题,我建立了一个简单的项目,结构如下: 问题是这样的: 1,silverlightApplication1中有一个按钮,点击后弹出窗口:silverlightApplication6中只有一个canvas来放置从SilverlightApplication1.dll反射得到的控件. 2,silverlightApplication6中动态加载了silverlightApplication1的SilverlightApplication1.dll文件

C# 如何动态加载DLL,实例化对象

问题描述 通过Activator.CreateInstance(assemblyName,typeName).Unwrap()可以实例化一个对象.但是如何动态加载DLL,然后通过Activator.CreateInstance(assemblyName,typeName).Unwrap()来实例化一个对象呢. 解决方案 解决方案二:Assemblyass=Assembly.LoadFrom("dllpath"); 解决方案三:Assembly.Load("程序集名"

静态与动态加载Dll [示例代码]

1.DLL源代码 MyDll.h [cpp] view plaincopyprint? //////////////////////////////////////////////////////////////////////////  // MyDll.h  // 声明函数  int _stdcall Add(int a,int b);  int _stdcall Sub(int a,int b);  /////////////////////////////////////////////

c# 动态加载和卸载C#DLL程序集 C++程序集,

c# 动态加载和卸载C#DLL程序集的原文链接是: http://www.cnblogs.com/MiracleLee/archive/2013/01/31/2886323.html 做一个开源项目地址是: 点击打开链接

一起谈.NET技术,Silverlight动态加载DLL

问题 今天手头的项目遇到一个问题,为了描述这个问题,我建立了一个简单的项目,结构如下: 问题是这样的: 1,silverlightApplication1中有一个按钮,点击后弹出窗口:silverlightApplication6中只有一个canvas来放置从SilverlightApplication1.dll反射得到的控件. 2,silverlightApplication6中动态加载了silverlightApplication1的SilverlightApplication1.dll文件

.NET 动态加载程序集 (三)

我们先看看一般的反射的动态方法查找 下面为ms自带的例子ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemreflectionmethodbaseclassinvoketopic.htm public class A {    public virtual int method () {return 0;} } public class B {    public virtual int method () {return 1;} }