Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中运行时调用参数未知的非托管dll#_C#_Dynamic_Dll_Unmanaged - Fatal编程技术网

C# 在C中运行时调用参数未知的非托管dll#

C# 在C中运行时调用参数未知的非托管dll#,c#,dynamic,dll,unmanaged,C#,Dynamic,Dll,Unmanaged,我需要从非托管dll调用一个函数,在运行时之前我不知道哪个函数或参数是什么。相信我,我无法在编译时知道它 在C#中有这样做的方法吗 使用DLLImport已过时,因为我不知道该函数将是什么 我已经看过了_arglist,但它没有文档记录,似乎仍然需要我在编译时知道参数 除了使用另一种语言编写一些内联汇编之外,我没有什么想法。你什么时候知道的?运行时是否有名称的字符串信息?最后,您必须生成一个调用。在运行时,我拥有所需的所有信息:dll的名称/位置、函数的名称、参数的名称和类型,和调用约定。您

我需要从非托管dll调用一个函数,在运行时之前我不知道哪个函数或参数是什么。相信我,我无法在编译时知道它

在C#中有这样做的方法吗

  • 使用DLLImport已过时,因为我不知道该函数将是什么
  • 我已经看过了_arglist,但它没有文档记录,似乎仍然需要我在编译时知道参数

除了使用另一种语言编写一些内联汇编之外,我没有什么想法。

你什么时候知道的?运行时是否有名称的字符串信息?最后,您必须生成一个调用。在运行时,我拥有所需的所有信息:dll的名称/位置、函数的名称、参数的名称和类型,和调用约定。您可以使用CodeDOM或Reflection.Emit动态生成具有适当绑定的方法的程序集/类型。虽然CodeDOM不是我所需要的(它生成代码文件,而不是实际的运行时函数)。反射。发射似乎正好适合这个。您仍然没有解释如何在非托管Dll函数中使用它,因此这不是一个很好的答案,但它很接近。我想我可以自己解决剩下的问题,如果我解决了,我会把它贴在这里。