Как скомпилировать программу на С ++, которая использует windows.h и google glog (glog/logging.h)?
У меня есть две библиотеки A и B. Библиотека B - это моя собственная библиотека, и мне нужен "windows.h". Также для некоторых функций мне нужно использовать стороннюю библиотеку A. A использует библиотеку Google Logging, и вот проблема:
Первая ошибка была такая:
Severity Code Description Project File Line Error C1189 #error: ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h
Я определил GLOG_NO_ABBREVIATED_SEVERITIES до "Ах", но после этого появились странные ошибки компоновки. Я проверил все предложенные здесь решения, но ни одно из них не работает.
Есть ли другие способы использовать glog в проекте, который использует "windows.h"?
РЕДАКТИРОВАТЬ:
Ошибки компоновщика:
error LNK2019: unresolved external symbol "__declspec(dllimport) public: char __thiscall std::basic_ios<char,struct std::char_traits<char> >::fill(char)" (__imp_?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z) referenced in function "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<char,struct std::char_traits<char>,char>(class std::basic_ostream<char,struct std::char_traits<char> > &,struct std::_Fillobj<char> const &)" (??$?6DU?$char_traits@D@std@@D@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABU?$_Fillobj@D@0@@Z)
error LNK2019: unresolved external symbol "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::operator<<(class std::ios_base & (__cdecl*)(class std::ios_base &))" (__imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z) referenced in function _getHtsLables
error LNK2019: unresolved external symbol "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall std::basic_ostream<char,struct std::char_traits<char> >::operator<<(double)" (__imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z) referenced in function "public: virtual void __thiscall AD3::FactorDense::Print(class std::basic_ostream<char,struct std::char_traits<char> > &)" (?Print@FactorDense@AD3@@UAEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z)
fatal error LNK1120: 3 unresolved externals
0 ответов
Определить
GLOG_NO_ABBREVIATED_SEVERITIES
перед включениемlogging.h
#define GLOG_NO_ABBREVIATED_SEVERITIES #include <windows.h> #include <glog/logging.h>
Добавить
GLOG_NO_ABBREVIATED_SEVERITIES
в определениях препроцессора в Visual Studio, т.е.Project > Properties > C/C++ > Preprocessor
.
Я перекомпилировал A после добавления GLOG_NO_ABBREVIATED_SEVERITIES, но ничего не изменилось. Но проблема решена путем изменения порядка включения "Ах" и "Windows.h". Когда я добавляю "Ah" перед "windows.h", ошибка не появляется!!! Я не могу понять, что было настоящей причиной ошибок компоновщика! - плательщик