Regex 是否可以将VS2019中构建的共享静态库与VS2010项目链接?
我需要一个正则表达式库,可以返回子匹配的项目,必须建立在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”不匹配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
注意,下面的接口不使用任何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的可能解决方案有:
前者需要源可用性,而后者要求存在所有依赖库,这可能会导致查找导入函数的名称的问题。该消息是尝试将VS2010中创建的export.lib与VS2019中的代码链接的结果。自VS2012以来,它不再受支持 使用.dll的可能解决方案有:
前者需要源的可用性,后者要求所有依赖库都存在可能会导致查找导入函数的名称的问题。
< 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所需的所有功能)?