Re: COM question
JJ <JJ@discussions.microsoft.com> wrote:
1. What is the difference between #import xxx.tlb and #import xxx.dll?
In the first case, the type library is in a standalone file. In the
second, the type library happens to be bound to the DLL as a resource.
#import behaves the same in both cases.
2. Why do we pass BSTR as parameter instead of char* to COM object?
Mostly for historical reasons. BSTR mimics the internal format of Visual
Basic strings. Automation was originally designed to work with VB.
Note that
- BSTR is Unicode while char* is not. BSTR allows one to work seamlessly
with strings in many languages.
- BSTR is length-prefixed and may contain embedded NULs. This is
sometimes useful.
- It is incorrect to state that char* cannot be used in COM interfaces -
it can. However, such an interface won't be automation compatible, so it
could not be used from VB and scripts. BSTR is a requirement of
Automation, not of COM per se.
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925