[cairo] Buidling cairomm with MSVC

John Emmas johne53 at tiscali.co.uk
Sun Nov 10 03:28:41 PST 2013

Hi guys,

According to the cairomm information page, this is the correct mailing 
list for asking questions about cairomm.  I hope that information's 
still current.  I have a simple question about building cairomm with MSVC.

After downloading cairomm from git, I can see that it contains a number 
of MSVC projects.  AFAICT the various tests tend to build exes whereas 
the libraries are mostly built as DLLs.  When building DLLs for Windows 
its common (in fact, mandatory AFAIK) to use __declspec for indicating 
when a symbol needs to get imported from a DLL.  Exporting is slightly 
different because a module definition file can be used instead of 
__declspec.  Indeed, I can see that the cairomm.vcproj files do generate 
a ".def" file at build time.  But it still leaves the problem of how an 
application will know that cairomm.lib is the symbols library for a DLL 
as opposed to a regular static lib.  This is the most common strategy... 
I've taken glibmm as an example because it also uses gendef:-

       #ifdef GLIBMM_DLL
         #if defined(GLIBMM_BUILD) && defined(_WINDLL)
           /* Do not dllexport as it is handled by gendef on MSVC */
           #define GLIBMM_API
         #elif !defined(GLIBMM_BUILD)
           #define GLIBMM_API __declspec(dllimport)
           /* Build a static library */
           #define GLIBMM_API
         #endif /* GLIBMM_BUILD - _WINDLL */
         #define GLIBMM_API
       #endif /* GLIBMM_DLL */

I've looked for something similar in cairomm but I couldn't find 
anything.  In fact, I couldn't find any use of __declspec at all, so how 
does this work in cairomm?


More information about the cairo mailing list