Связь между автоматически сгенерированным кодом в _TLB и файлом DLL, из которого он был сгенерирован

У меня есть DLL, которую я импортирую в проект как библиотеку типов, используя функцию Import Type Library в Project в Delphi 6. Недавно мне стало любопытно, какая связь между файлом _TLB.pas и DLL, из которой он был сгенерирован. Используется ли файл _TLB.pas вместо библиотеки или только в том случае, если у меня есть интерфейс кода с ним? Какую еще информацию о том, как код в _TLB.pas работает с DLL, из которой он был сгенерирован, было бы полезно узнать?


person mnuzzo    schedule 15.03.2011    source источник
comment
Это библиотека типов для DLL из других ваших сообщений об OleVariant? Если это так, я предложил импортировать библиотеку типов уже давно . :)   -  person Ken White    schedule 15.03.2011
comment
да. Я пытаюсь узнать, как работает Delphi, пока запускаю эту программу и библиотеку импортированных типов, чтобы лучше понять, с чем я работаю.   -  person mnuzzo    schedule 15.03.2011
comment
библиотека типов - это то, как вы должны были работать с этой DLL все время, вместо того, чтобы пытаться преобразовать OleVariant в класс Delphi (что на самом деле не так).   -  person Ken White    schedule 15.03.2011


Ответы (2)


Файл .pas создается из библиотеки типов, которая обычно содержится в DLL-библиотеке COM.

Файл .pas определяет интерфейс для COM DLL. COM DLL, которые поставляются со встроенными библиотеками типов, имеют интерфейсы с самоописанием. Вам по-прежнему нужна документация, чтобы понять, что делают интерфейсы и методы и как используются параметры. Но вам не нужно самостоятельно писать стандартный код интерфейса.

Когда COM-DLL имеет встроенную библиотеку типов, вы можете создавать модули импорта на выбранном вами языке программирования, а не только на Delphi.

Если вы хотите знать COM, нет лучшего справочника, чем Essential COM, одна из лучших компьютерных книг, которые я когда-либо читал.

person David Heffernan    schedule 15.03.2011
comment
Ваш ответ на мой последний вопрос, кажется, исчез. Я не уверен, удалили ли вы его, потому что он еще не был принят, но я просто пытаюсь узнать больше прямо сейчас, и я бы согласился, если бы перехватчик сработал для меня. - person mnuzzo; 15.03.2011
comment
@mnuzzo Я удалил его, потому что не уверен, что у нас есть достаточно четкое представление о том, что вы делаете. Я восстановлю его, если хотите. - person David Heffernan; 15.03.2011
comment
Если вы еще не уверены, что это уместно, то я не против. Это мой первый раз, когда я работаю с файлами Delphi и DLL, поэтому я не собираюсь делать вид, что нет другого возможного решения или что то, что я делаю, является правильным способом. Все, что я знаю, это код, который находится передо мной, вызванная ошибка и то, что я вижу в файлах DLL. - person mnuzzo; 15.03.2011

файл _TLB.pas генерируется из DLL; это интерфейс на основе Pascal, который ваш проект будет использовать для вызова функций в DLL.

Во время компиляции вам понадобится файл _TLB.pas; во время выполнения вам нужна DLL.

person Jeroen Wiert Pluimers    schedule 15.03.2011
comment
Из часто задаваемых вопросов: Пожалуйста, не используйте подписи или слоганы в своих сообщениях. Каждое сообщение, которое вы делаете, уже подписано вашей стандартной карточкой пользователя, которая напрямую ведет на вашу страницу пользователя. Вы приближаетесь к 10 000, вы уже должны были перешагнуть через это!! ;-) - person David Heffernan; 16.03.2011
comment
@David: Спасибо, я полностью пропустил это. Так как я везде использую эту (очень короткую --jeroen) подпись, она как бы в моей вегетативной нервной системе. Постараюсь избегать этого здесь в будущем, но терпите меня, так как мне нужно «разучить» свою систему :-) - person Jeroen Wiert Pluimers; 16.03.2011