Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: TLB Добавлено: 03.04.10 22:11  

Автор вопроса:  Winand | Web-сайт: winandfx.narod.ru
Правда, что tlb компилируются в исполняемый файл и их не нужно таскать и регистрировать? Случайно наткнулся)
'* REQUIREMENTS
'* ------------
'* Note: TLBs are compiled to your program so you don't need to distribute the files
'* - OleGuids3.tlb = Ole Guid and interface definitions 3.0

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Филюс



ICQ: 7116156 

Вопросов: 3
Ответов: 14
 Web-сайт: filyus.ru
 Профиль | | #1
Добавлено: 19.06.10 18:36
TLB - это уже скомпилированные объявления. Если программа вызывает функцию из TLB, то вызов идёт почти напрямую (через импорт), а вызов же через Declare - динамический, т.е. перед вызовом по имени библиотеки с функцией проверяется загружена ли она (через GetModuleHandle), если нет, то происходит её загрузка (через LoadLibrary), а потом по имени функции ищется её адрес (через GetProcAddress) и только потом происходит её вызов. Вывод такой: через TLB функции вызываются намного быстрее. И ещё плюсы TLB: увеличивается скорость вызова за счёт того, что строки не конвертируются из Unicode в Ansi, а потом обратно, можно использовать различные трюки с указателями, свойства Set и Get (как в функции mid, которую можно присваивать). При этом из TLB извлекаются только нужные определения, т.е. ненужные определения не влияют на размер файла.

Ответить

Номер ответа: 2
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #2 Добавлено: 21.06.10 10:00
Правда, что tlb компилируются в исполняемый файл и их не нужно таскать и регистрировать?

Правда, и странно это не знать. Хотя есть исключения.
Добавлю также, что TLB - единственный безопасный способ вызова АПИ в многопоточной среде VB6 - до тех пор пока в потоке не инициализирован COM (а, соответственно, и TLS).

Ответить

Номер ответа: 3
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 21.06.10 13:22
LamerOnLine, тут ты жутко не прав, как и многие. Как раз после правильной инициализации COM и OLE в потоке, он может адекватно вызывать API-функции.Вспоминаем мой пример организации многопоточности в standard exe

Ответить

Номер ответа: 4
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #4 Добавлено: 23.06.10 17:12
Exec, ну читай же ты внимательнее. Русским по белому же написано - до тех пор пока в потоке не инициализирован COM (а, соответственно, и TLS) :)
Пока не инициализирован OLE - вызов АПИ через Declare - гарантированный GPF по возврату. С TLB такой проблемы нет. Уж поверь, примеры по многопоточности мне не нужны :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам