@alexey734

Как исправить ошибку линковки библиотеки libbson в Qt?

Есть необходимость использования библиотеки libbson https://github.com/mongodb/libbson, написанной на C, в Qt проекте.
Библиотеку собрал согласно инструкции для Windows https://github.com/mongodb/libbson/blob/master/REA... используя один из предложенных cmake генератор "Visual Studio 11" (для Visual Studio 2012), msbuild.exe ALL_BUILD.vcxproj и
msbuild.exe INSTALL.vcxproj прошли успешно.
Библиотека установилась в C:\install\path\.

В файле .pro Qt проекта подключил заголовки библиотеки

HEADERS += \
    C:/install/path/include/libbson-1.0/bcon.h \
    C:/install/path/include/libbson-1.0/bson.h \
    C:/install/path/include/libbson-1.0/bson-atomic.h \
    C:/install/path/include/libbson-1.0/bson-clock.h \
    C:/install/path/include/libbson-1.0/bson-compat.h \
    C:/install/path/include/libbson-1.0/bson-config.h \
    C:/install/path/include/libbson-1.0/bson-context.h \
    C:/install/path/include/libbson-1.0/bson-endian.h \
    C:/install/path/include/libbson-1.0/bson-error.h \
    C:/install/path/include/libbson-1.0/bson-iter.h \
    C:/install/path/include/libbson-1.0/bson-json.h \
    C:/install/path/include/libbson-1.0/bson-keys.h \
    C:/install/path/include/libbson-1.0/bson-macros.h \
    C:/install/path/include/libbson-1.0/bson-md5.h \
    C:/install/path/include/libbson-1.0/bson-memory.h \
    C:/install/path/include/libbson-1.0/bson-oid.h \
    C:/install/path/include/libbson-1.0/bson-reader.h \
    C:/install/path/include/libbson-1.0/bson-stdint.h \
    C:/install/path/include/libbson-1.0/bson-stdint-win32.h \
    C:/install/path/include/libbson-1.0/bson-string.h \
    C:/install/path/include/libbson-1.0/bson-types.h \
    C:/install/path/include/libbson-1.0/bson-utf8.h \
    C:/install/path/include/libbson-1.0/bson-value.h \
    C:/install/path/include/libbson-1.0/bson-version.h \
    C:/install/path/include/libbson-1.0/bson-writer.h


и указал где искать lib
LIBS += "C:\install\path\lib\bson-1.0.lib"

В cpp файле включаю заголовок библиотеки:
extern "C" {
#include "C:/install/path/include/libbson-1.0/bson.h"
}


И пробую использовать функции libbson:
bson_t *bsonobj = bson_new();

Делаю Сlean project, Run qmake.
Собираю проект, используя профиль MSVC2012 64bit, сборка завершается ошибкой:
moc_TestApp.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ bson_new в функции "protected: void __cdecl TestApp::usageBson(class QTextStream &)" (?usageBson@TestApp@IEAAXAEAVQTextStream@@@Z)


lib виден, т.к. если заведомо указываю неправильный путь в LIBS, то получаю ошибку LNK1181

В чем может быть проблема?
  • Вопрос задан
  • 3177 просмотров
Решения вопроса 1
@drozdVadym
Если не принципиально использование конкретно этой либы можете попробовать QJson
habrahabr.ru/post/147952

И еще в Qt 5.0 есть doc-snapshot.qt-project.org/5.0/qjsondocument.html

А зачем вы все хедеры libbson включаете в проект?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы