Не удается связать со статической библиотекой SQLite3 - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть статическая библиотека libsqlite3.a, которую я хочу связать с моей маленькой программой.Мой файл make выглядит так:

CPP = g++

sources = main.cpp
objects = main.o

included = -IC:/SQLite-lib/include
linked = -LC:/SQLite-lib/ -lsqlite3

main : $(objects)
    $(CPP) $(linked) $(objects) -o main

main.o : $(sources)
    $(CPP) $(included) -c main.cpp

Я получаю сообщение об ошибке такого типа:

g++ -LC:/SQLite-lib/libsqlite3.a main.o -o main
main.o:main.cpp:(.text+0x42): undefined reference to `sqlite3_open'
main.o:main.cpp:(.text+0x7d): undefined reference to `sqlite3_close'
main.o:main.cpp:(.text+0xe7): undefined reference to `sqlite3_close'
collect2: ld returned 1 exit status
make: *** [main] Error 1

Что я делаю не так?Я использую Win XP SP3, GCC 4.6.2.

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012

Вы всегда должны размещать библиотеки после файлов, на которые вы ссылаетесь. Измените строку компоновки в make-файле на:

main : $(objects)
    $(CPP) $(objects) -o main $(linked)

Это должно сработать.

0 голосов
/ 09 февраля 2012

Аргументы вашей ссылки неверны. -L используется для указания каталогов (путь поиска), где можно найти библиотеки. -l используется для указания на какие библиотеки ссылаться.

g++ -LC:/some/lib/path main.o -o main -lsqlite3
...