问题描述
动态加载嵌入资源(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数据类型要注意,常在这反面出错