Как изменить DLL - PullRequest
       25

Как изменить DLL

1 голос
/ 24 августа 2010

Мы используем внешний Dlls как:

[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 или сказать, как использовать, например, DllExport, который недоступен в C #. Так что позже любой может использовать метод с атрибутом

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

Ответы [ 2 ]

3 голосов
/ 24 августа 2010

Вы не можете использовать C # для добавления метода к существующему предварительно скомпилированному * .dll.

Вам нужно будет найти исходный код для DLL, написать свой метод, перекомпилировать изатем используйте этот новый метод из C #.

EDIT

Я все еще не уверен, что вы запрашиваете в своем обновлении.Если вы хотите написать новый метод, который может использоваться другими потребителями C #, вам не нужно делать ничего особенного с атрибутами.Просто напишите открытый метод для открытого класса.

После этого любой потребитель .NET может добавить ссылку на сборку в ваш класс и использовать ваш метод.

Если вы хотите, чтобы любой потребитель Windows былВ состоянии использовать ваш код, вы можете исследовать COM Interop.

Если вы все еще пытаетесь использовать DLL C / C ++, то мой оригинальный ответ остается в силе.

1 голос
/ 24 августа 2010

Я не уверен, что правильно вас понял, но вы хотите добавить метод к существующему dll.Если я прав, то это невозможно.другие параметры:

  • Найти источники этого dll, добавить метод и перекомпилировать
  • Создать новый dll и реализовать метод там и использовать новое имя в DllImport
...