Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 是否可以将VS2019中构建的共享静态库与VS2010项目链接?_Regex_Visual Studio 2010_Visual C++_Shared Libraries - Fatal编程技术网

Regex 是否可以将VS2019中构建的共享静态库与VS2010项目链接?

Regex 是否可以将VS2019中构建的共享静态库与VS2010项目链接?,regex,visual-studio-2010,visual-c++,shared-libraries,Regex,Visual Studio 2010,Visual C++,Shared Libraries,我需要一个正则表达式库,可以返回子匹配的项目,必须建立在VS2010。关于子匹配,我的意思是对于这个正则表达式:“(\w+):(\d+)”应用于这个输入字符串“deer:1234”,匹配状态为true,我想检索两个子匹配的内容--“deer”和“1234”。Visual Studio 2010没有正则表达式,因此我尝试在Visual Studio 2019中构建Google RE2作为共享静态库,然后制作一个简单的界面(见下文),为我提供所需的最低限度的功能。显然,它在Visual Studio

我需要一个正则表达式库,可以返回子匹配的项目,必须建立在VS2010。关于子匹配,我的意思是对于这个正则表达式:“(\w+):(\d+)”应用于这个输入字符串“deer:1234”,匹配状态为true,我想检索两个子匹配的内容--“deer”和“1234”。Visual Studio 2010没有正则表达式,因此我尝试在Visual Studio 2019中构建Google RE2作为共享静态库,然后制作一个简单的界面(见下文),为我提供所需的最低限度的功能。显然,它在Visual Studio 2019中构建得很好,但是当我复制re2.lib和下面显示的标题并尝试将其编译到我的2010项目中时,我得到了以下错误:

错误LNK2038:检测到“\u MSC\u VER”不匹配:值“1900”与值“1600”不匹配

注意,下面的接口不使用任何C++标准库。它只是一个带有字符数组输入的简单类。我在想,如果我把re2.lib编译成一个共享的静态链接库,然后将它与我的2010项目链接起来,它应该可以工作。但在花了近两天的时间试图让它发挥作用后,我对其他解决方案持开放态度。我的方法行得通吗?如果不行,有人能推荐一个在VisualStudio2010中编译的好的正则表达式库吗

class RE2;

class __declspec(dllexport) BasicRegex {
public:
    BasicRegex(const char* str);
    ~BasicRegex();

    bool fullMatch(const char* str, char**& submatches, int numsubmatches);
    bool fullMatch(const char* str);
    bool partialMatch(const char* str, char**& submatches, int numsubmatches);
    bool partialMatch(const char* str);

private:
    RE2* gre2;
};

该消息是尝试将VS2010中创建的export.lib与VS2019中的代码链接的结果。自VS2012以来,它不再受支持

使用.dll的可能解决方案有:

  • 使用新编译器重新编译.dll或export.lib
  • 动态加载库
    前者需要源可用性,而后者要求存在所有依赖库,这可能会导致查找导入函数的名称的问题。

    该消息是尝试将VS2010中创建的export.lib与VS2019中的代码链接的结果。自VS2012以来,它不再受支持

    使用.dll的可能解决方案有:

  • 使用新编译器重新编译.dll或export.lib
  • 动态加载库

    前者需要源的可用性,后者要求所有依赖库都存在可能会导致查找导入函数的名称的问题。

    < P>不幸的是,简短的答案是否定的,至少不是用Visual C++的旧版本,如下所示:


    <> P> >遗憾的是,简短的答案是否定的,至少不是用Visual C++的旧版本,如下所示:


    诚恳地说,

    我认为静态链接库可以工作的原因是,我假设它可以复制RE2所需的VS2019版本的所有相关Windows STL库。如果我编译为DLL,那么链接不会发生,它会尝试使用系统在运行时安装的任何东西的windows STL(这将是VS 2010 STL,它没有RE2所需的所有功能)?我认为静态链接库可以工作的原因是,我假设它可以复制RE2所需的VS2019版本的所有相关Windows STL库。如果我编译为DLL,那么链接不会发生,它会尝试使用系统在运行时安装的任何东西的windows STL(这将是VS 2010 STL,它不具备RE2所需的所有功能)?