Должен ли я связать sqlite3 как простой объектный код или как статическую библиотеку в приложении C ++? - PullRequest
2 голосов
/ 26 августа 2009

Я создаю приложение на C ++, которое использует sqlite3 в качестве встроенной базы данных. Исходный текст для sqlite3 распространяется в виде объединенного файла исходного кода sqlite3.c и двух файлов заголовков.

Каковы относительные преимущества или недостатки объединения кода sqlite3 непосредственно в двоичный файл моей программы по сравнению с компиляцией sqlite3 в виде статической библиотеки и ее связыванием таким образом?

Я уже решил не ссылаться на код sqlite3 в качестве динамической библиотеки.

Ответы [ 3 ]

3 голосов
/ 26 августа 2009

Это действительно не имеет большого значения.
Предполагая, что у вас есть какая-то среда makefile, sqlite.c будет скомпонован только один раз, если вы ничего не измените, а компоновщик объединит объектный файл почти так же, как при подключении статической библиотеки.

2 голосов
/ 26 августа 2009

Статическая библиотека компилируется в вашу программу. Связывание кода напрямую компилируется в вашу программу. Так что, похоже, это на самом деле одно и то же :) Управлять проектом может быть проще, если вы связываете его как статическую библиотеку, поскольку у вас будет меньше исходных файлов. С другой стороны, если вам нужно быстро изменить исходные файлы библиотеки, для этого не потребуется перестраивать статическую библиотеку. В конечном итоге это зависит от вас.

0 голосов
/ 29 апреля 2015

Вот способ включения sqlite3 в вашу библиотеку, без включения каких-либо символов в вашу библиотеку:

#define SQLITE_API static
#include <sqlite.h>
#include <sqlite.c>

Тогда вы гарантированно не будете конфликтовать с другими реализациями sqlite, с которыми могут связываться пользователи вашей библиотеки.

...