Я загрузке COM DLL с помощью этого метода:Должен ли я освобождать загруженный модуль при утилизации объекта?
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]
private extern static IntPtr LoadLibrary(string librayName);
Должен ли я освободить библиотеку DLL с помощью:
[DllImport("kernel32", SetLastError = true)]
private static extern bool FreeLibrary(IntPtr hModule);
или просто дайте терминации приложение справиться?
+1 И чтобы немного разъяснить, * только * освободите те библиотеки DLL, которые вы загрузили с помощью 'LoadLibrary'. Вы не должны освобождать любую из системных DLL, таких как «system32», «kernel32» и т. Д., * Или * любые DLL-файлы, чей дескриптор вы получаете с помощью «GetModuleHandle». Подробнее см. [Документация] (http://msdn.microsoft.com/en-us/library/ms683152.aspx). –
Я использую TLBIMP, но я не люблю обрабатывать un \ регистрации моих COM-объектов при развертывании каждой версии. – HuBeZa
@HuBeZa: Вы должны * использовать установщик, который позаботится об этом для вас. Выполнение этого вручную - гигантская боль в тылу. Но программа установки фактически упростит управление версиями, а не сложнее. –