Сборка кода с использованием cl и подключение к библиотеке sqlite - PullRequest
0 голосов
/ 04 октября 2018

У меня есть пример кода с сайта sqlite.

#include <stdio.h>
#include <sqlite3.h> 

int main(int argc, char* argv[]) {
   sqlite3 *db;
   char *zErrMsg = 0;
   int rc;

   rc = sqlite3_open("test.db", &db);

   if( rc ) {
      fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
      return(0);
   } else {
      fprintf(stderr, "Opened database successfully\n");
   }
   sqlite3_close(db);
}

Я поместил приведенный выше код в test12_sqlite_database.cpp и поместил заголовочный файл sqlite и исходный файл в каталог include.Затем я хочу построить этот код, используя cl.exe.Это команда построения:

cl /EHsc test12_sqlite_database.cpp /I include /link d:\sqlite\sqlite3.dll

Ошибка:

d:\sqlite\sqlite3.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x360

После поиска в Интернете он сказал, что не может связаться с динамической библиотекой.Итак, как использовать cl, чтобы исходный код мог успешно скомпилироваться и использовать динамическую библиотеку?

1 Ответ

0 голосов
/ 04 октября 2018

Вы не должны связывать файлы .dll, но должны связывать файлы .lib с вашим проектом.Непонятно, откуда вы взяли этот sqlite3.dll, почему у него нет .lib-файла для его ссылки и так далее.Он отсутствует в sqlite.org, поэтому вы, вероятно, говорите о другом сайте.

Рекомендуемый способ использования библиотеки SQLite - просто внедрить ее непосредственно в приложение.Это означает просто добавление sqlite3.c и включение файлов sqlite3.h в ваш проект, и это должно работать.

...