无法使用MinGW链接libpcrecpp

3

在编译/链接该代码时:

#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

我遇到了以下错误:

/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)"

也许尝试使用“-static”标志? - Galik
也许尝试更改库的顺序:https://dev59.com/gmkw5IYBdhLWcg3wXZT8#9968496 - Galik
可能是使用GCC链接静态库的正确方法的重复问题。 - Galik
还有这个可能会有帮助:http://www.rapidtables.com/code/linux/gcc/gcc-l.htm - Galik
对我来说,这些都不起作用。:( - Alexander Aleksandrovič Klimov
2个回答

3

1

您必须定义 PCRE_STATIC(即 -DPCRE_STATIC)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接