1

我们将外部 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();
4

2 回答 2

3

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

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

编辑

我仍然不确定您在更新中要求什么。如果您想编写一个可供其他 C# 使用者使用的新方法,那么您不必对属性做任何特别的事情。只需在公共类上编写公共方法即可。

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

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

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

于 2010-08-24T16:01:51.430 回答
1

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

  • 查找该dll的来源,添加方法并重新编译
  • 创建新的dll并在那里实现方法并在其中使用新的名称DllImport
于 2010-08-24T16:00:54.780 回答