Re: [pcre-dev] compile pcre-7.2 on MingW+XP

Top Page

Reply to this message
Author: andy wang
To: pcre-dev
Subject: Re: [pcre-dev] compile pcre-7.2 on MingW+XP
Hi, Philip

> > I have a question about the following macros in pcreposix.h
> > After the changes,  the following two lines look like this:
> > #    define PCREPOSIX_EXP_DECL extern __declspec(dllimport)
> > #    define PCREPOSIX_EXP_DEFN  __declspec(dllexport)

> Yes. They are wrong. It should be done the way it is done in pcre.h,
> which is like this:

Now I understood, thanks :-).

and from your explanation I also found the reason for the static
linkage problem:
the __imp__pcre_fullinfo in libpcrecpp.a is showed because when
building includes the "pcre.h" in libpcrecpp.h, so for
libpcrecpp.a it is just like App to libpcre.a, so the pcre_fullinfo
etc is the "import" symbols.

After adding the "pcre_internal.h" in I can now make
static linkage to App.

+// #define PCRE_DEFINITION /* Win32 __declspec(export) trigger for .dll */
+#include "pcre_internal.h"
#include <pcre.h>
#include "pcre_stringpiece.h"
#include "pcrecpp.h"

(besides, I also found that PCRE_DEFINITION no longer existed. So even
I commented that, it works fine for both dynamic and static linkage.)

another thing is when linking with the static library, the orders for
library is important:
g++ -I. .libs/libpcrecpp.a .libs/libpcre.a is OK while
g++ -I. .libs/libpcre.a .libs/libpcrecpp.a will fail :-(