Newbie question: COM programming and linking to Windows libraries

Denis Koroskin 2korden at gmail.com
Wed Mar 11 17:22:00 PDT 2009


On Thu, 12 Mar 2009 00:31:33 +0300, Patrick Kristiansen <patrick.kristiansen at gmail.com> wrote:

> Hi
>
> I've been trying out D lately, and I really love it. I use the Tango  
> library at the moment, and I wanted to do some simple COM programming,  
> which I'm also a newbie at, just to get more acquainted with Windows  
> programming in D.
>
> What I want to do is relatively simple I think. I want to use the  
> IActiveDesktop COM interface to change the wallpaper of my desktop. So  
> far I have ported the definition of the interface to D and the different  
> structs used as arguments to the interface's methods. The porting went  
> pretty easily, although I haven't been able to test it yet (I'll return  
> to that in a moment). The standard Windows types (e.g. LPCTSTR, DWORD,  
> etc.) are, as you probably know, defined in tango.sys.win32.Types.
>
> I looked at the samples that is included with the DMD compiler bundle  
> (dclient.d, dserver.d and chello.d) to see COM programming in D is done.  
> Apparently, one of the first things to do is call CoInitialize(...), and  
> this is where my problem arises.
>
> CoInitialize is located in ole32.lib, but in the Tango distribution of  
> DMD, there is no ole32.lib included. I thought, since I have the Windows  
> SDK (x64) installed, that I could just link directly to the ole32.lib  
> included there.
>
> Now, this is probably obvious to some people - but not to me. Why  
> doesn't this work? Why does OPTLINK fail and tell me that the format of  
> the .lib file is wrong? Is it because Digital Mars compilers produce  
> .lib files in a different format? Is it because I have the 64 bit SDK  
> installed, and DMD and optlink only produce and consume 32 bit object  
> files and libraries?
>
> Please enlighten me ;-)
>
> Thanks in advance.
>
> -Patrick

You can simply download DMD distribution from digitalmars.com, it includes ole32.lib



More information about the Digitalmars-d-learn mailing list