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