问题:动态加载嵌入资源(DLL)
动态加载嵌入资源(DLL)http://www.lijialong.name/loaddll.html
这个代码我转成VB代码结果过不去
Return m.Invoke(_object, ObjArray_Parameter)
这一句提示:类型“System.Int32”的对象无法转换为类型“System.Byte”
请教该如何解决呢?
代码如下:
Public Function InvokeMethod(ByVal lpFileName As String, ByVal myNameSpace As String, ByVal className As String, _
ByVal lpProcName As String, ByVal ObjArray_Parameter() As Object) As Object
'Try
Dim assembly As Assembly = assembly.Load(LoadDll(lpFileName)) '加载指定的DLL程序集
Dim type() As Type = assembly.GetTypes()
Dim t As Type
For Each t In type
If t.Name = className Then
If t.Namespace = myNameSpace Then
Dim m As MethodInfo = t.GetMethod(lpProcName) '加载需要调用的方法
If m IsNot Nothing Then
Dim _object As Object = Activator.CreateInstance(t)
Return m.Invoke(_object, ObjArray_Parameter) '调用指定的方法,并返回结果(如果有)
Else
System.Windows.Forms.MessageBox.Show("方法:" + lpProcName + " 不存在!")
End If
'Else
' System.Windows.Forms.MessageBox.Show("命名空间:" + myNameSpace + ",类:" + className + " 不存在!")
End If
End If
Next
System.Windows.Forms.MessageBox.Show("命名空间:" + myNameSpace + ",类:" + className + " 不存在!")
'Catch e As Exception
' MessageBox.Show(e.Message)
'End Try
Return Nothing
End Function
Private Function LoadDll(ByVal lpFileName As String) As Byte()
Dim assembly As Assembly = assembly.GetExecutingAssembly()
Try
Dim stream As Stream = assembly.GetManifestResourceStream(assembly.GetName().Name + "." + lpFileName)
Dim buffer(stream.Length - 1) As Byte
stream.Read(buffer, 0, buffer.Length)
stream.Close()
Return buffer
Catch e As Exception
MessageBox.Show(e.Message)
End Try
Return Nothing
End Function --------------------编程问答-------------------- 找到原因了,是数据类型不匹配,哈哈,结贴 --------------------编程问答-------------------- 看样只能曾分了。
win32好象有专门的资源DLL。 --------------------编程问答-------------------- 嗯,看错误就知道是类型不匹配的。
楼主可以看看别的资料,有专门的对应的资料的。
C++,C#,VB.net,同样的东西,类型分别是什么 --------------------编程问答-------------------- 调用DLL数据类型要注意,常在这反面出错
补充:.NET技术 , VB.NET