【发布时间】:2010-11-23 18:22:56
【问题描述】:
看完Dynamically calling unmanaged dlls in .net
我一直在尝试根据自己的喜好修改代码。我创建了一个类,它实现了 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 不能是泛型类型定义。有没有办法解决这个问题,还是我必须提供一个命名的委托来做任何非托管的事情?
任何对在非托管代码的窗口中默认可以做什么感兴趣的人的参考 - Link(创建快捷方式,动态加载 DLL)
【问题讨论】:
标签: .net-3.5 delegates pinvoke marshalling anonymous-methods