2017-08-28 143 views
-2

我想知道如何调用一个在外部静态类(dll文件)中定义的函数,而无需在main中调用它。主要调用一个没有调用的dll函数

为了使事情更清楚,考虑一个exe文件的代码没有暴露,我们不能做任何形式的修改,现在我想用我的dll文件中定义的某些测试用例来测试一个exe文件我必须在exe文件的main()函数中调用函数。但如前所述,我没有权限修改exe文件的代码。现在,如何在没有使用Visual Studio调用它的情况下在所需的执行点调用此dll函数。

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

为了让事情更清晰,我只想补充一些例子

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. 
    } 
}  
+0

真的不清楚你在问什么。你可以展示一些代码示例,或者可能是一个图表? –

+0

所以你想从exe中调用DLL而无需修改exe文件? –

+0

@ rory.ap我加了个例子,请检查一下吧 –

回答

0

一个想法是,使用PowerShell的调用的DLL文件,如果你不能在该.exe修改代码。

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

命名空间数学
{
公共类中的方法
{
公共方法()
{
}
公共静态INT比较1(INT A,INT B)
{
如果(a return a;
else
return b;
}

公众诠释比较2(INT A,INT B)
{
如果(一个 回报;
别的
返回b;
}
}
}

然后在Powershell环境中调用它:

[空隙] [reflection.assembly] ::的LoadFile( “C:/xxx.dll”)
02. [Math.methods] ::比较1(10,8)
03. $ A =新建 - 对象Math.Methods
04. $ a.Compare2(2,6)