我想使用反射来动态调用vb.net中的dll(不是一个程序集,非托管,可能是COM对象模型)。在vb.net中通过反射调用非装配(非托管)dll中的方法?
我见过几种不同的方法调用dll中的一个.net程序集 - 但我还没有找到动态调用像user32.dll或winmm.dll这样的dll内部方法的方法。我相信这会被称为迟到绑定?
我问的原因是我正在构建一种语言,这将取决于外部库的许多不同的功能。
一个例子(这个语言,我要建):
Declare Function mciSendStringA using "winmm.dll" (strCommand As String, strReturn As String, returnLength As Integer, blah As Integer) As Integer
Declare Function WriteConsoleA using "kernel32.dll" (hConsoleOutput As Integer, lpBuffer As String, numberofcharstowrite as Integer, lpReserved as Integer) As Boolean
当我建立在WINMM.DLL调用mciSendString解释,我怎么可以使用反射来处理呢?我希望用户能够引用他们希望的任何dll /方法。
我可以在正确的方向得到一些指导吗?也许甚至有些vb.net代码我可以分解和理解?
避免尝试实现自己的PInvoke封送处理,细节会吃掉你。 TypeBuilder.DefinePInvokeMethod()是有帮助的。 – 2011-12-26 22:49:45