2015-01-04 76 views
3

雖然編譯/鏈接驗證碼:使用此命令無法鏈接libpcrecpp W/MinGW的

#include <string> 
using std::string; 

#include <pcrecpp.h> 
using pcrecpp::RE; 

int main() { 
    string 
     subj ("Hello world!"), 
     rgx ("lolCat([0-9])"), 
     result; 
    RE(rgx).FullMatch(subj, &result); 
} 

...:

i586-mingw32msvc-g++ -std=c++11 -o test.exe -Ipcre-install/include test.cpp \ 
pcre-install/lib/libpcre.a \ 
pcre-install/lib/libpcrecpp.a \ 
pcre-install/lib/libpcreposix.a 

...我得到這個錯誤(S) :

/tmp/ccAR72nT.o:test.cpp:(.text+0x119): undefined reference to `_imp___ZN7pcrecpp2RE6no_argE' 
/tmp/ccAR72nT.o:test.cpp:(.text+0x123): undefined reference to `_imp___ZN7pcrecpp2RE6no_argE' 
/tmp/ccAR72nT.o:test.cpp:(.text+0x12d): undefined reference to `_imp___ZN7pcrecpp2RE6no_argE' 
/tmp/ccAR72nT.o:test.cpp:(.text+0x137): undefined reference to `_imp___ZN7pcrecpp2RE6no_argE' 
/tmp/ccAR72nT.o:test.cpp:(.text+0x141): undefined reference to `_imp___ZN7pcrecpp2RE6no_argE' 
/tmp/ccAR72nT.o:test.cpp:(.text+0x14b): more undefined references to `_imp___ZN7pcrecpp2RE6no_argE' follow 
/tmp/ccAR72nT.o:test.cpp:(.text+0x1bd): undefined reference to `_imp___ZNK7pcrecpp2RE9FullMatchERKNS_11StringPieceERKNS_3ArgES6_S6_S6_S6_S6_S6_S6_S6_S6_S6_S6_S6_S6_S6_S6_' 
/tmp/ccAR72nT.o:test.cpp:(.text+0x1d6): undefined reference to `_imp___ZN7pcrecpp2RED1Ev' 
/tmp/ccAR72nT.o:test.cpp:(.text+0x294): undefined reference to `_imp___ZN7pcrecpp2RED1Ev' 
/tmp/ccAR72nT.o:test.cpp:(.text$_ZN7pcrecpp3ArgC1EPSs[__ZN7pcrecpp3ArgC1EPSs]+0x16): undefined reference to `_imp___ZN7pcrecpp3Arg12parse_stringEPKciPv' 
/tmp/ccAR72nT.o:test.cpp:(.text$_ZN7pcrecpp2REC1ERKSs[__ZN7pcrecpp2REC1ERKSs]+0x6a): undefined reference to `_imp___ZN7pcrecpp2RE4InitERKSsPKNS_10RE_OptionsE' 
collect2: error: ld returned 1 exit status 

我做錯了什麼?

libpcrecpp編譯此配置:

../pcre3-8.35/configure --host=i586-mingw32msvc \ 
--enable-shared=no --enable-static=yes \ 
--prefix="$(readlink -m ../pcre-install)" 
+0

也許試試「靜態」標誌? – Galik 2015-01-04 12:42:38

+0

它沒有幫助。 – 2015-01-04 12:47:26

+0

也許嘗試更改庫的順序:http://stackoverflow.com/a/9968496/3807729 – Galik 2015-01-04 12:49:59

回答

1

你必須定義PCRE_STATIC(即-DPCRE_STATIC)。