C# 在C中运行时调用参数未知的非托管dll#
我需要从非托管dll调用一个函数,在运行时之前我不知道哪个函数或参数是什么。相信我,我无法在编译时知道它 在C#中有这样做的方法吗C# 在C中运行时调用参数未知的非托管dll#,c#,dynamic,dll,unmanaged,C#,Dynamic,Dll,Unmanaged,我需要从非托管dll调用一个函数,在运行时之前我不知道哪个函数或参数是什么。相信我,我无法在编译时知道它 在C#中有这样做的方法吗 使用DLLImport已过时,因为我不知道该函数将是什么 我已经看过了_arglist,但它没有文档记录,似乎仍然需要我在编译时知道参数 除了使用另一种语言编写一些内联汇编之外,我没有什么想法。你什么时候知道的?运行时是否有名称的字符串信息?最后,您必须生成一个调用。在运行时,我拥有所需的所有信息:dll的名称/位置、函数的名称、参数的名称和类型,和调用约定。您
- 使用DLLImport已过时,因为我不知道该函数将是什么
- 我已经看过了_arglist,但它没有文档记录,似乎仍然需要我在编译时知道参数
除了使用另一种语言编写一些内联汇编之外,我没有什么想法。你什么时候知道的?运行时是否有名称的字符串信息?最后,您必须生成一个调用。在运行时,我拥有所需的所有信息:dll的名称/位置、函数的名称、参数的名称和类型,和调用约定。您可以使用CodeDOM或Reflection.Emit动态生成具有适当绑定的方法的程序集/类型。虽然CodeDOM不是我所需要的(它生成代码文件,而不是实际的运行时函数)。反射。发射似乎正好适合这个。您仍然没有解释如何在非托管Dll函数中使用它,因此这不是一个很好的答案,但它很接近。我想我可以自己解决剩下的问题,如果我解决了,我会把它贴在这里。