Ошибка сборки Avro C ++ в Visual Studio 2015

В моем текущем проекте C ++ мне нужно использовать сериализатор Avro C ++. Сначала я собрал boost 1.6.2 и на его основе в Visual Studio 2015 создаю файл Avro-cpp.sln, как это упоминается на соответствующем сайте avro. В моем коде я использую следующие файлы включения

 #include "avro/DataFile.hh"#include "avro/Compiler.hh"#include "avro/ValidSchema.hh"#include "avro/Schema.hh"#include "avro/Generic.hh"#include "avro/Specific.hh"

Однако, когда я пытаюсь построить проект, я получаю следующие ошибки

error LNK2019: unresolved external symbol "public: void __thiscall avro::DataFileWriterBase::syncIfNeeded(void)
error LNK2019: unresolved external symbol "public: __thiscall avro::DataFileWriterBase::DataFileWriterBase(char const *,class avro::ValidSchema const &,unsigned int,enum avro::Codec)"error LNK2019: unresolved external symbol "public: __thiscall avro::DataFileWriterBase::~DataFileWriterBase(void)" (??1DataFileWriterBase@avro@@QAE@XZ) referenced in function "public: void * __thiscall avro::DataFileWriterBase::`scalar deleting destructor'(unsigned int)"error LNK2019: unresolved external symbol "public: void __thiscall avro::DataFileWriterBase::close(void)"error LNK2019: unresolved external symbol "public: void __thiscall avro::DataFileWriterBase::close(void)"error LNK2019: unresolved external symbol "void __cdecl avro::compileJsonSchema(class std::basic_istream<char,struct std::char_traits<char> > &,class avro::ValidSchema &)"error LNK2019: "public: void __thiscall avro::DataFileWriterBase::flush(void)"

Я предполагаю, что компоновщик не находит определения конкретных классов DataFileWriterBase и compileJsonSchema. Так как я не работал с AVRO, прежде чем я хотел бы спросить, какие библиотеки мне следует добавить, чтобы решить эту проблему? Должен ли я вставить соответствующие файлы cc в мой исходный код? Я также собрал из файла Avro-cpp.sln файлы avrocpp.dll и avrocpp_s.dll, включил их в свой проект, но проблема осталась прежней. У кого-нибудь есть идеи, так как я не нашел ни намека ни на сайте avro, ни на подобных форумах.

Привет еще раз, это новые выводы

Я тщательно искал и, возможно, нашел возможную причину, но я не знаю, как двигаться дальше. Проблема, кажется, в файле Config.hh

 #ifndef avro_Config_hh
#define avro_Config_hh

// Windows DLL suport

#ifdef _WIN32
#pragma warning (disable: 4275 4251)

#if defined(AVRO_DYN_LINK)
#ifdef AVRO_SOURCE
# define AVRO_DECL __declspec(dllexport)
#else
# define AVRO_DECL __declspec(dllimport)
#endif  // AVRO_SOURCE
#endif  // AVRO_DYN_LINK
#endif  // _WIN32

#ifndef AVRO_DECL
#define AVRO_DECL
#endif

#endif

Я думаю, что AVRO_DYN_LINK не определен и __declspec (dllexport) не выполняется. Таким образом, AVRO_DECL определен, и хотя библиотека lib создается с определениями функций, они экспортируются и возникает ошибка. Есть ли у вас какие-либо намеки на приведенный выше анализ?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …