Создание простого приложения, которое регистрирует и читает аргументы командной строки с помощью Visual Studio 2010 Express, google glog и google gflags? - PullRequest
2 голосов
/ 17 июня 2010

Я написал следующую простую программу:

#include "stdafx.h"
#include <gflags/gflags.h>
#include <glog/logging.h>
#include <ostream>
int _tmain(int argc, char* argv[])
{

    google::InitGoogleLogging(argv[0]);


    LOG(INFO) << "Found";
    return 0;
}

Я проверил Google-Glog здесь: http://code.google.com/p/google-glog/source/checkout

И я проверил google-gflags отсюда: http://code.google.com/p/google-gflags/

У меня есть все три проекта в Visual Studio 2010 Express, все в одном решении:

  • Решение
    • GoogleLibsTest
    • libgflags
    • libglog

Когда я его скомпилирую, я получаю следующую ошибку:

1>------ Build started: Project: GoogleLibsTest, Configuration: Debug Win32 ------
1>GoogleLibsTest.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall google::LogMessage::~LogMessage(void)" (__imp_??1LogMessage@google@@QAE@XZ) referenced in function _wmain
1>GoogleLibsTest.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > & __thiscall google::LogMessage::stream(void)" (__imp_?stream@LogMessage@google@@QAEAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@XZ) referenced in function _wmain
1>GoogleLibsTest.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall google::LogMessage::LogMessage(char const *,int)" (__imp_??0LogMessage@google@@QAE@PBDH@Z) referenced in function _wmain
1>GoogleLibsTest.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl google::InitGoogleLogging(char const *)" (__imp_?InitGoogleLogging@google@@YAXPBD@Z) referenced in function _wmain
1>C:\Users\leeand00\Desktop\glogNgflagsTest\GoogleLibsTest\Debug\GoogleLibsTest.exe : fatal error LNK1120: 4 unresolved externals
========== Build: 0 succeeded, 1 failed, 2 up-to-date, 0 skipped ==========

Я сделал несколько вещей, чтобы попытаться исправить это, включая:

  • На странице свойств решения выберите «Общие свойства проекта»> «Зависимости» и задайте для GoogleLibsTest зависимость от двух других проектов.

  • На странице свойств GoogleLibsTest

    • Добавление libgflags-debug.lib libglog_static.lib в список Свойства конфигурации> Линкер> Вход> Дополнительные зависимости.

    • В Свойствах конфигурации> Каталоги VC ++ я добавил каталог, содержащий libgflags-debug.lib и libglog_static.lib, в список каталогов библиотеки.

    • В Свойствах конфигурации> C / C ++> Общие> Дополнительные каталоги включения добавлены пути к \ src \ windows (поскольку здесь находятся заголовочные файлы для glog)

    • В Свойствах конфигурации> C / C ++> Общие> Дополнительные каталоги включения добавлены пути к \ src \ windows (поскольку именно здесь заголовочные файлы для gflags)

По какой-то причине он ищет файл DLL (я не знаю, почему это так)

Что-то еще мне не хватает?

Ответы [ 2 ]

3 голосов
/ 19 августа 2010

Кажется, что вы хотите статическую ссылку на glog, но не забудьте определить макрос "GOOGLE_GLOG_DLL_DECL =", просто посмотрите на проект logging_unittest_static, поставляемый с glog.

Хотя я думаю, что есть некоторые другие проблемы при использованииглог с gflags на винде.Проверьте эту ссылку

2 голосов
/ 25 мая 2014

Предполагая, что в вашем проекте уже есть «Дополнительные каталоги включения», установленные в src / windows папки проекта GLOG, проверьте следующее:

1) Убедитесь, что и GLOG, и ваше приложение скомпилированы в 32- или 64-битном режиме (на данный момент GLOG компилируется только в 64-битном режиме) 2) Убедитесь, что libglog.dll находится в вашем системном пути 3) Убедитесь, что libglog.lib установлен в «Дополнительные зависимости» вашего проекта (под Linker-> Input) 4) Убедитесь, что путь к libglog.lib задан в «Дополнительных библиотечных каталогах» вашего проекта (в разделе «Linker-> General»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...