-2

我想知道我们如何调用在外部静态类(dll 文件)中定义的函数,而不在 main 中调用它。

为了让事情更清楚,考虑一个 exe 文件,它的代码没有公开,我们不能对它做任何修改,现在我想用我的 dll 文件中定义的某些测试用例来测试一个 exe 文件,调用该函数必须在 exe 文件的 main() 函数中创建。但如前所述,我无权修改 exe 文件的代码。现在如何在需要的执行点调用这个 dll 函数,而无需使用 Visual Studio 调用它。

我想调用一个函数而不向主函数添加任何行。

为了让事情更清楚,我只想添加一些示例

static class DllClass
{
   static void dllFunction()
   {
      //some implementation.
   }
}
class ThirdParty
{
  public static void Main()
  {
    //Default implementation that i cannot modify.
    //Invoking my static function at this point without calling.(i.e i cannot call DllClass.dllFunction()) 
    //continuing with default implementation.
  }
}     
4

1 回答 1

0

一种想法是,如果您无法修改 .exe 中的代码,则使用 Powershell 调用 dll 文件。

例如,一个带有方法的简单库。

命名空间数学
{
公共类方法
{
公共方法()
{
}
公共静态int比较1(int a,int b)
{
if(a返回a;
否则
返回b;
}

public int Compare2(int a, int b)
{
if (a return a;
else
return b;
}
}
}

然后在 Powershell 环境中调用它:

[void][reflection.assembly]::LoadFile("C:/xxx.dll")
02.[Math.methods]::Compare1(10,8)
03.$a=New-Object Math.Methods
04.$ a.Compare2(2,6)

于 2017-08-29T06:24:41.983 回答