我正在开发一个允许用户从托管和本机.dll调用外部代码的应用程序。用户将能够指定在运行时调用的库/方法/函数(它将存储在配置文件中)。
如果我知道我想在编译时调用什么dll /函数,我知道如何使用pinvoke为本机库执行此操作,但我找不到有关如何在运行时执行此操作的任何信息。
基本上我想做的是调用方法:
int result = ExecuteNativeFunction("someLibrary.dll", "foo");
让它做一些等同于:
的事情[DllImport("someLibrary.dll")]
static extern int foo();
...
int result = foo();
答案 0 :(得分:2)
this会成为您想要的吗?使用System.Reflection.Emit,您可以动态编译定义新PInvoke方法的代码。有关详细信息,请参阅linked file中的课程DllRegServer
。