Мне нужна библиотека регулярных выражений, которая может возвращать субматчи для проекта, который должен быть построен на VS 2010. Под субматчами я подразумеваю для этого регулярного выражения: "(\ w +): (\ d +)" применено к этой входной строке " олень: 1234 ", состояние совпадения - истина, и я хочу получить содержимое двух подсовпадений -" олень "и" 1234 ". В Visual Studio 2010 нет регулярных выражений, поэтому я попытался создать Google RE2 в Visual Studio 2019 в качестве общей статической библиотеки, а затем создать простой интерфейс (см. Ниже), чтобы предоставить мне минимальные необходимые мне функции. Очевидно, что он прекрасно работает в Visual Studio 2019, но когда я копирую re2.lib и заголовок, показанный ниже, и пытаюсь скомпилировать его в свой проект 2010, я получаю эту ошибку:
ошибка LNK2038: обнаружено несоответствие для _MSC_VER: значение «1900» не соответствует значению «1600»
Обратите внимание, что мой интерфейс ниже не использует стандартную библиотеку C ++. Это просто простой класс с входными данными массива символов. Я думал, что если я скомпилирую re2.lib как общую статически связанную библиотеку, а затем свяжу ее с моим проектом 2010 года, он должен работать. Но потратив почти 2 дня, пытаясь заставить это работать, я открыт для других решений. Подойдет ли мой подход или нет, кто-нибудь может порекомендовать хорошую библиотеку регулярных выражений, которая компилируется в Visual Studio 2010?
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;
};