如何修改DLL

时间:2010-08-24 15:57:18

标签: c# dllimport dllexport

我们正在使用外部Dll:

[DllImport("DemoExport.dll")]
    public static extern string GetDBConnection(string sDBName);
    [DllImport("DemoExport.dll")]
    public static extern int CreateEmptyDBFromDB(string SourceDBName, string DestinationDBName);
    [DllImport("DemoExport.dll")]

现在,我们想要以相同的模式添加新方法。我们正在寻找有什么办法在DemoExport.dll中实现方法吗?所以,我们可以使用方法说DemoMethod()如:

[DllImport("DemoExport.dll")]
    public static extern void DemoMethod();

这可能看起来像一个疯狂的问题,但我们确实需要实现这个方法,以后我们可以使用相同的方法。

此外,如果以上是不可能的,那么如何创建一个新的dll或说如何使用像C#中没有的DllExport。所以,以后,任何人都可以使用带有属性

的方法
[DllImport("dllname.dll")]
publis statis extern void mymeth();

2 个答案:

答案 0 :(得分:3)

您不能使用C#将方法添加到现有的预编译* .dll。

您必须找到DLL的源代码,编写方法,重新编译,然后从C#中使用该新方法。

修改

我仍然不确定您在更新中要求的是什么。如果要编写可供其他C#使用者使用的新方法,则不必对属性执行任何特殊操作。只需在公共类上编写一个公共方法。

之后,任何.NET使用者都可以向您的类添加程序集引用并使用您的方法。

如果您希望任何Windows使用者能够使用您的代码,您可以调查COM Interop。

如果您仍在尝试使用C / C ++ dll,那么我的原始答案仍然存在。

答案 1 :(得分:1)

我不确定我是否理解正确,但您想要将方法添加到现有 dll。如果我是正确的那么这是不可能的。其他选择是:

  • 查找该dll的来源,添加方法并重新编译
  • 在那里创建新的dll并实现方法,并在DllImport
  • 中使用新的名称