<分区>
在这种情况下,我正在尝试创建一个程序,该程序将读取一个字符串并使用该字符串在 dll 中 dll 一个函数。
看到这个
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void MessageBoXy(string a, string b);
UnmanagedLibrary test = new UnmanagedLibrary("Test.dll");
MessageBoXy testX = test.GetUnmanagedFunction<MessageBoXy>("Testy");
testX.DynamicInvoke("Hello there", "lol");
当我使用 DynamicInvoke 时,我的“Test.dll”被调用,MessageBoxA
使用通过 c# 传递的字符串从 dll 中执行....
一切都很好,但这是我需要帮助的地方....
你看到这个 private delegate void MessageBoXy(string a, string b);
它是静态的,不能改变.....现在我需要程序读取一个字符串并改变返回值和委托(delegate)的参数....例如
我想读取一个字符串,如“Call Test.dll RETURN string PARAMS int, int, char, string”
现在应该可以无限扩展参数并为其创建委托(delegate),然后调用 DLL 中的函数。
我正在制作一种宏程序,我希望用户能够在 DLL 中输入一个返回值和参数,然后调用该 dll,所以我不知道用户需要什么参数或返回值,所以 c#代码必须能够创建我需要的任何委托(delegate)。
我需要什么?
我需要一个类或示例来展示如何生成对象设置返回值,设置参数然后使用对象[]数组调用对象,该数组将成为参数,例如myFunc(string a, string b)
将被创建并且 object[0] 将是参数 1 等等....
底线是我需要能够从用户创建的脚本中动态调用 dll 文件。