Re: Buidling cairomm with MSVC

Andrea Canciani <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <CAN_5=BDNeHo-KAvNiNgEVDiRUNctMu06jy9OGRxVhdVPKMd+zA@mail.gmail.com>
On Sun, Nov 10, 2013 at 12:28 PM, John Emmas <[email protected]> wrote:

> 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.


See http://msdn.microsoft.com/en-us/library/aa271769(v=vs.60).aspx
__declspec(import) is mandatory for variables, but for functions it is just
an optimization which removes a jump.


>  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)
>         #else
>           /* Build a static library */
>           #define GLIBMM_API
>         #endif /* GLIBMM_BUILD - _WINDLL */
>       #else
>         #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?
>

The idea is that the jump optimization is not usually needed.
If in your usage, it has a significant performance impact, could you
provide some testcases to reproduce the issue?
(I agree that a better handling of win32 DLLs would be quite desirable, but
right now I'm more concerned with other issues, like initialization and
TLS).

Andrea


>
> John
> --
> cairo mailing list
> [email protected]
> http://lists.cairographics.org/mailman/listinfo/cairo
>

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.