dev cpp win32 программа не запускается из-за отсутствия sqlite3.dll

  1. Я использую dev C++ IDE, в которой используется ming gcc (я не уверен в этом)
  2. Я хотел использовать sqlite3 в своем приложении win32 c
  3. Я загрузил sqlite3.dll и sqlite3.dev и использовал dlltool для создания файла .a, такого как libsqlite3.a, вставил его в папку lib dev cpp и добавил этот путь в параметры проекта -> параметры
  4. я скопировал файл заголовка sqlite3.h в папку include (которую я получил с другого веб-сайта - http://www.opensource.apple.com/source/SQLite/SQLite-74/derived_source/sqlite3.h)
  5. я запустил программу и получил сообщение "программа не может запуститься, потому что на вашем компьютере отсутствует sqlite3.dll"
  6. поэтому я скопировал sqlite3.dll в свой рабочий каталог, и все заработало.

НО

Как сделать sqlite.* статическим при компиляции?

Я имею в виду, что я думал, включив libsqlite3.a, окончательный exe не будет зависеть от каких-либо внешних dll.

Поэтому я хочу знать, как скомпилировать так, чтобы мне не нужна была dll, и тем самым моя программа для Windows стала автономной.

мне нужно создать файл .lib вместо файла .a?

РЕДАКТИРОВАТЬ после ответов и комментариев: кроме того, devpak работает нормально... но я хотел знать, как включать файлы в проект или создавать файлы .a, поэтому я пытаюсь использовать этот способ, потому что если некоторые компоненты не предоставляйте devpak, тогда это будет то, как нам нужно скомпилировать .. не так ли?

ИЗМЕНИТЬ, чтобы показать, что я сделал после ответа CL и двух комментариев

Вот как я добавил sqlite.c в список проектов

введите здесь описание изображения

Вот журнал компиляции

Компилятор: Компилятор по умолчанию

Сборка Makefile: "C:\Users\jayapalc\Documents\test-sqlite\Makefile.win"

Выполнение сделать...

make.exe -f "C:\Users\jayapalc\Documents\test-sqlite\Makefile.win" все

g++.exe -c sqlite3.c -o sqlite3.o -I"lib/gcc/mingw32/3.4.2/include" -I"include/С++/3.4.2/назад" -I"include/С++/3.4. 2/mingw32" -I"включить/С++/3.4.2" -I"включить"

sqlite3.c: в функции `void strftimeFunc(sqlite3_context*, int, sqlite3_value**)':

sqlite3.c:14727: ошибка: неверное преобразование из void*' tochar*'

Файлы, которые я нашел в sqlite.org/sqlite-amalgamation-3071502.zip,

shell.c, sqlite3.h, sqlite3.c, sqlite3ext.h и я видел в других обсуждениях, что shell.c не нужен...

Кроме того, люди говорили о gcc и g++... .


person Jayapal Chandran    schedule 13.02.2013    source источник
comment
Обновите свою IDE до следующей версии, в которой исправлено огромное количество ошибок, которая поставляется с GCC 4.7.1 (x64) или 4.7.2 и является полностью переносимой: sourceforge.net/projects/orwelldevcpp   -  person Orwell    schedule 14.02.2013


Ответы (2)


Помимо обновления самого Dev-C++, попробуйте скомпилировать sqlite.c как файл C:

  • Перейдите в Проект >> Параметры проекта >> Файлы.
  • Найдите файл C, о котором мы говорим. Снимите флажок «Скомпилировать файл как C++».

Это должно сообщить Dev-C++, что он должен вызывать gcc.exe, а не g++.exe.

Если вы не хотите компилировать sqlite самостоятельно, добавляя его в свой проект, вы можете попробовать передать флаг -static в GCC/G++, чтобы принудительно связать libsqlite.a статически.

person Orwell    schedule 14.02.2013

Просто включите файл sqlite3.c в свой проект.

Вам нужен только этот файл, и он должен быть скомпилирован как C, а не C++.

Судя по всему, Dev-C++ не позволяет смешивать исходные файлы C и C++ в одном проекте. Вместо этого вы можете попытаться скомпилировать sqlite3.c как C, а затем включить сгенерированный файл .o в проект C++ (на странице компоновщика).

person CL.    schedule 13.02.2013
comment
как включить? к свойствам проекта, таким как добавление библиотек или в качестве заголовка... только что попробовал в качестве заголовка и получил много недопустимых ошибок преобразования... обычно компонент используется для предоставления файла .a и файла заголовка... но... здесь я не понимаю, как двигаться дальше. - person Jayapal Chandran; 14.02.2013
comment
В качестве исходного файла, как и другие ваши файлы C/C++. - person CL.; 14.02.2013
comment
да, я сделал ... но я получил недопустимые преобразования ... я обновил свой вопрос, отредактировав подписи. кроме того, я читал ту же проблему в другом обсуждении, но не уверен, что он сделал... вот ссылка... cplusplus.com/forum/general/24340 - person Jayapal Chandran; 14.02.2013
comment
Ага. это сработало. Спасибо. кроме того, я создал новый проект и выбрал его как проект c, и он сработал (ранее я выбирал проект cpp). поэтому при выборе проекта c используется gcc, а при выборе проекта c++ используется g++... верно ли мое предположение? - person Jayapal Chandran; 14.02.2013
comment
и что мне делать, если я хочу, чтобы это работало с проектом С++? я имею в виду, выбрав проект С++ и хочу использовать sqlite3.c, будет ли это работать? или дело в том, что sqlite3.c специально предназначен только для проектов c, а не для c++...? - person Jayapal Chandran; 14.02.2013