Попытка вызова функций SQLITE3 в MINGW C - программа не работает должным образом.Я подозреваю, что проблема связана с файлом .a, но я не вижу, где и почему нет вывода.
Установлен последний дистрибутив MinGW с nuwen.net в Windows 10 в c: \ mingw.
C:\c>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/8.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../src/configure --enable-languages=c,c++ --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --disable-multilib --prefix=/c/temp/gcc/dest --with-sysroot=/c/temp/gcc/dest --disable-libstdcxx-pch --disable-libstdcxx-verbose --disable-nls --disable-shared --disable-win32-registry --with-tune=haswell --enable-threads=posix --enable-libgomp
Thread model: posix
gcc version 8.1.0 (GCC)
Загруженные sqlite-amalgamation-3260000.zip, sqlite-dll-win64-x64-3260000.zip и sqlite-tools-win32-x86-3260000.zip с sqlite.org.
Заголовки sqlite3.h и sqlite3ext.h были скопированы из sqlite-amalgamation-3260000.zip в каталог include \ sqlite3.
Файлы sqlite3.def и sqlite3.dll были извлечены из sqlite-dll-win64-x64-3260000.zip во временный каталог.
Во временном каталоге я запустил dlltool -U -d sqlite3.def -l libsqlite3.a (как описано в http://www.mingw.org/wiki/createimportlibraries). (обратите внимание, что я пробовал с и без -Флаги U и -k)
Не было выведено ни одного сообщения, а размер файла libsqlite3.a составляет около 200 КБ (хотя я отмечаю, что .DLL имеет размер 10x). Я скопировал получившийся файл libsqlite3.a в каталог lib.
Я пишу небольшую программу test3.c, чтобы проверить, могу ли я вызвать sqОблегченная функция правильно:
#include <stdio.h>
#include "sqlite3\sqlite3.h"
sqlite3* db;
int main() {
printf("Start\n");
sqlite3_open("test.db", &db);
if(db == 0) {
printf("Could not open database.\n");
}
else {
printf("Database Open \n");
}
}
Я компилирую без ошибок, используя: gcc test3.c -lsqlite3
Я запускаю a.exe и абсолютно ничего не вижу - даже напечатанная строка «Старт»
Я закомментирую только строку "sqlite3_open" и перекомпилирую с той же командой, затем снова запускаю, и я вижу
C:\c>a
Start
Could not open database.
Поскольку поведение является неожиданным при вызове функции sqlite3 и как .aразмер файла составляет одну десятую от размера .DLL, я подозреваю, что проблема там - но все еще не может понять, почему «Старт» не выводится.