Koziev / GrammarEngine

Грамматический Словарь Русского Языка (+ английский, японский, etc)
MIT License
75 stars 20 forks source link

ошибка компиляции #5

Closed Veivan closed 6 years ago

Veivan commented 6 years ago

Использую VS 2010. При компиляции ошибки: Ошибка 101 error C2440: инициализация: невозможно преобразовать "int" в "Solarix::SynPatternTreeNode *" c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility 163 1 Grammar_Engine Ошибка 102 error C2439: std::_Pair_base<_Ty1,_Ty2>::first: не удается инициализировать член c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility 163 1 Grammar_Engine

Koziev commented 6 years ago

Использую VS 2010. При компиляции ошибки: А имя исходного файла (не ...\include\utility) и номер строки с ошибкой можете сказать?

Veivan commented 6 years ago

Вот сообщения при компиляции ошибочного файла:

Veivan commented 6 years ago

1>------ Построение начато: проект: Grammar_Engine, Конфигурация: Release x64 ------ 1>Файл проекта содержит ToolsVersion="12.0". Возможно, этот набор инструментов неизвестен или отсутствует (в этом случае проблему можно устранить, установив подходящую версию MSBuild), либо для данной сборки определено конкретное значение ToolsVersion в параметрах политики. Проект обрабатывается как имеющий ToolsVersion="4.0". Дополнительные сведения см. по ссылке http://go.microsoft.com/fwlink/?LinkId=291333. 1> LA_SynPatternTrees.cpp 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2440: инициализация: невозможно преобразовать "int" в "Solarix::SynPatternTreeNode " 1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции 1> c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(247): см. ссылку на создание экземпляров функции шаблон при компиляции "std::_Pair_base<_Ty1,_Ty2>::_Pair_base<_Ty,lem::UCString>(_Other1 &&,_Other2 &&)" 1> with 1> [ 1> _Ty1=Solarix::SynPatternTreeNode , 1> _Ty2=lem::UCString, 1> _Ty=int, 1> _Other1=int, 1> _Other2=lem::UCString 1> ] 1> ........\ai\la\LA_SynPatternTrees.cpp(80): см. ссылку на создание экземпляров функции шаблон при компиляции "std::pair<_Ty1,_Ty2>::pair<int,lem::UCString>(_Other1 &&,_Other2 &&)" 1> with 1> [ 1> _Ty1=Solarix::SynPatternTreeNode , 1> _Ty2=lem::UCString, 1> _Other1=int, 1> _Other2=lem::UCString 1> ] 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2439: std::_Pair_base<_Ty1,_Ty2>::first: не удается инициализировать член 1> with 1> [ 1> _Ty1=Solarix::SynPatternTreeNode , 1> _Ty2=lem::UCString 1> ] 1> c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(166): см. объявление "std::_Pair_base<_Ty1,_Ty2>::first" 1> with 1> [ 1> _Ty1=Solarix::SynPatternTreeNode *, 1> _Ty2=lem::UCString 1> ] ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Koziev commented 6 years ago

Строка тоже видна в Вашем листинге. У меня нет под рукой vs2010, поэтому проверить вживую не могу. Судя по коду в строке, там проблема приведения NULL к указателю. Я внес исправления в исходники и закомитил, можете попробовать собрать.

Veivan commented 6 years ago

Ошибка компиляции исправилась, но при компоновке теперь: 1>------ Построение начато: проект: Grammar_Engine, Конфигурация: Release x64 ------ 1>Файл проекта содержит ToolsVersion="12.0". Возможно, этот набор инструментов неизвестен или отсутствует (в этом случае проблему можно устранить, установив подходящую версию MSBuild), либо для данной сборки определено конкретное значение ToolsVersion в параметрах политики. Проект обрабатывается как имеющий ToolsVersion="4.0". Дополнительные сведения см. по ссылке http://go.microsoft.com/fwlink/?LinkId=291333. 1> Создается библиотека D:\Work\Framework\GrammarEngine\src/lib64/Solarix_Grammar_Engine.lib и объект D:\Work\Framework\GrammarEngine\src/lib64/Solarix_Grammar_Engine.exp 1>libcrf.lib(train_l2sgd.obj) : error LNK2019: ссылка на неразрешенный внешний символ impdclass в функции l2sgd 1>libcrf.lib(crf1d_context.obj) : error LNK2019: ссылка на неразрешенный внешний символ __vdecl_exp2 в функции crf1dc_exp_state 1>C:\Windows\TEMP\Grammar_Engine\Release-Pro64\solarix_grammar_engine.dll : fatal error LNK1120: 2 неразрешенных внешних элементов ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Koziev commented 6 years ago

Похоже, что не линкуется библиотека CRFSuite и ее зависимости. Проверьте, что перед сборкой Grammar_Engine откомпилированы проекты libcrf64, libLBFGS64, cqdb64 и в папке, указанной в свойстве "Additional Library Directories" проекта Grammar_Engine, лежат свежесобранные libcrf.lib cqdb.lib libLBFGS.lib

Veivan commented 6 years ago

Да, сгенерил эти проекты и получил solarix_grammar_engine.dll