Issue calling Com function(s)

Paul K Gleske
Thu Jun 14 20:02:00 GMT 2001


Thanks.  The placement of -lole32 on the command line should have been
obvious to me.  Sorry to waste everybody's bandwidth on that part of my

I think that my runtime trouble comes from our project having its own copy
of the sdk header files.  We cleaned them up enough to compile without
errors, but the code is not being generated correctly, obviously.

In the call to IStream::Stat the offset into the vtable is 0x68
without -fvtable-thunks, 0x38 with -fvtable-thunks, and finally the correct
0x30 with the simple, pure gcc, sample app I posted.

I appreciate the future posting of the libraries, but I still haven't seen
anything that explains to me what is going on.  Maybe I'm just thick.  I
assume that it has something to do with the __attribute__((com_interface)))
in the gcc version of the header file.  I see some of the symptoms, but I
don't get the big picture.  Can anyone help?

Also, minor issue, but the two printfs in the sample app don't print.  Any
ideas?  Could this be related to not having the correctly compile libgcc.a
or libstdc++.a

Thanks a lot for sticking it out with me.  Please let me know when/where
those new libs are.


-----Original Message-----
From: Danny Smith [ ]
Sent: Thursday, June 14, 2001 8:31 PM
To: Paul K Gleske;
Subject: RE: Issue calling Com function(s)

--- Paul K Gleske <> wrote: > Slight goof on that post.
The make file I posted didn't have
> everything set
> (it was missing the -lole32 flag to the link).  Here is the correct
> makefile:
> -----------------
> makefile
> -----------------
> .PHONY: clean all
> istreamtest.exe : istreamtest.obj
> 	gcc -o istreamtest.exe -mwindows -mno-cygwin -lole32 istreamtest.obj

-lole32must follow istreamtest.obj


> Thanks for the link to the description of -fvtable-thunk.  However, I
> don't
> think it helps me to understand how/when it should be used.  There is
> the
> comment that all libs must be re-compiled including libgcc.a.  How do
> I do
> that?  Is it really necessary?

Yes, if you are going to use C++ exception handling (in libgcc.a) or
any classes/functions from libstdc++.a. In your testcase, you didn't.

Also any other support C++ libs must be built with same setting.

I hope to have  vtable-thunk versions of libstdc++.a, libgcc.a and
_G_config.h uploaded to mingw file release page this weekend.  They
will of course only be useful to you if you are using -mno-cygwin (or


_ - Yahoo! Messenger
- Voice chat, mail alerts, stock quotes and favourite news and lots more!

Want to unsubscribe from this list?
Check out:

More information about the Cygwin mailing list