在运行期间,我提供了一个String
名称,一个排序的对象数组和一些有关本机函数的附加信息(dllpath,calltype等)。
假设所有信息都在CallInformation
对象中。
我如何调用此原生函数?
请注意: - 运行前我没有提供dll。 - 运行前没有提供呼叫信息。 - 我在运行时之前不知道ammount或调用参数的类型。 - 我不知道运行前的返回类型。
关于调用本机函数的usual information on the web处理调用
我需要的是
答案 0 :(得分:2)
解决方案将涉及Reflection.Emit。您必须动态生成一个包含PInvoke签名的类,该签名使用基于CallInformation的相应DllImport属性进行修饰。 很抱歉没有代码,但考虑到详细的Reflection.Emit API,它无法归结为值得发布的内容。
答案 1 :(得分:1)
动态制作代理签名并使用反射调用它 只需查看如何动态创建委托,如何加载本机函数,如何使用反射调用函数并将它们连接在一起。