我一直在尝试根据自己的喜好修改代码。我创建了一个类,它实现了 idisposable 来包装加载调用并在需要时释放它们。但是,如果可以使用匿名委托,我似乎无法弄清楚语法。
var loaded=DynamicLibraryLoader.TryLoad("User32.dll");
var beeper=loaded.GetProcAddress("MessageBeep");
var type=typeof(Action<UInt32>);
Action<UInt32> beepAction2=(Action<UInt32>) Marshal.GetDelegateForFunctionPointer(beeper,type);
最后一行抛出一个参数异常,指出指定的 Type 不能是泛型类型定义。有没有办法解决这个问题,还是我必须提供一个命名的委托来做任何非托管的事情?
任何对默认情况下使用非托管代码在 Windows 中可以执行的操作感兴趣的人的参考 -链接 (创建快捷方式,动态加载 DLL)