Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > освобождение DLL после вызова процедуры


Автор: W03L 22.6.2009, 08:25
Привет.
есть библиотека, написанная на с++
если я вызываю процедуру из неё так:
Код

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

private void button1_Click(object sender, EventArgs e)
{
  _someProc();
}

то библиотека остаётся в памяти до закрытия приложения.
подскажите, как можно выгрузить dll.dll (чтобы отработало DLL_PROCESS_DETACH) не закрывая программы.

Автор: Partizan 22.6.2009, 10:08
W03L

Код

     [DllImport("kernel32.dll")]
     public static extern IntPtr LoadLibrary(string lpFileName);

     [DllImport("kernel32.dll")]
     public static extern IntPtr FreeLibrary(IntPtr library);

Автор: evkwarrior 8.6.2010, 11:28
С вашего позволения, продолжу эту тему:

LoadLibrary и FreeLibrary - это геморрой:

1) надо загружать каждую процедуру с помощью GetProcAddress 
2) делать приведение типов
3) преобразовывать неуправляемые типы к управляемым (с пом P\Invoke или Marshaling)

поправьте меня, если я не прав.

Можно придумать более простой способ выгрузки dll, минуя всё это?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)