|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
|||||||||||
Использование готовой dll, явная загрузка17.10.2022, 17:18. Показов 2996. Ответов 47
Метки нет (Все метки)
есть dll - sqlite3, подключаю с помощью loadlibrary, получаю указатель на нужные функции, вызываю их - с этим разобрался. см. код ниже. но вот второй параметр sqlite3_open - ссылка на объект БД ее получают в примерах в интернете как sqlite3 *db но для этого используют заголовочный файл <sqlite3.h>. Но этот файл нужно как то взять из исходников sqlite3.
вопросы: 1. можно ли db handle создать без заголовочного файла только используя dll 2. если нельзя, то как лучше получить sqlite3.h
0
|
|||||||||||
| 17.10.2022, 17:18 | |
|
Ответы с готовыми решениями:
47
DLL in VC++. Создание, загрузка, использование. Явная специализация шаблонной функции с использование decltype Явная загрузка dll |
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
||||||
| 19.10.2022, 08:48 | ||||||
|
Судя по объявлению, подразумевается что-то такое:
0
|
||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,831
|
||||||||
| 19.10.2022, 10:35 | ||||||||
*.lib не подойдет. нужно формаировать *.a, у MinGW библиотеки импорта в другом формате.2) Добавлять библиотеку импорта в проект, как у вас на скриншоте показано, не надо. Добавлять надо в настройках линковщика (Build Options -> Linker Settings -> Link Libraries) в CodeBlocks. 3) Сначала вам нужно досконально разобраться как происходит компиляция в С\С++, этапы компиляции, организация файлов в проекте. Четко понимать разницу между этапами препроцессора, компиляции и линковки. Четко представлять понятие "единица трансляции". Потом будет проще с библиотеками и ошибками линковки, которые будут встречаться при их использовании. И вместо void (*pFunction)(); указываете его.Например
0
|
||||||||
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
|||
| 19.10.2022, 13:06 [ТС] | |||
|
Добавлено через 1 минуту
0
|
|||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,831
|
||
| 19.10.2022, 14:00 | ||
|
Можно начать отсюда: https://youtu.be/G_jcBrrYPAs?t=78
0
|
||
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
|
| 19.10.2022, 14:10 [ТС] | |
|
0
|
|
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
||
| 20.10.2022, 12:20 [ТС] | ||
|
и по поводу отсутствия необходимости .lib к windows dll я тоже засомневался. вы ранее сообщили, что если у меня codeBlock то .lib не нужно а нужно .a https://www3.sqlite.org/howtocompile.html четко сказано как выполнить компиляцию из исходников для win, мало того у меня же получился рабочий пример в среде CodeBlock с использованием dll и lib. поищу теперь "библиотеки импорта для MinGW" для интереса
0
|
||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||
| 20.10.2022, 12:25 | |||
|
А вы ж про подключение готовой (собранной) dll спрашиваете Сами намешали всё в кучу, не надо.
0
|
|||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,831
|
|||||||||
| 20.10.2022, 12:45 | |||||||||
|
По сути необходимая для вашего случая информация содержится как раз в первых 15-25 минутах. Дальше пока можно не смотреть. Если речь про пост #16, то там у вас сборка примера с использование файла sqlite3.c, который вы добавили в проект. Никакие библиотеки, ни lib, ни a при таком варианте не нужны. В любом случае lib-файл у вас там был добавлен неправильно, но это никак не повлияло на результат по причине использования непосредственно sqlite3.c.Если взять за основу командную строку, которая дана по ссылке, то сборка DLL и одновременное получение библиотеки импорта к ней будет выглядеть так:
0
|
|||||||||
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
|||
| 20.10.2022, 14:19 [ТС] | |||
|
с этим я разобрался. я описал, что хотел использовать dll а в итоге использовал исходники. я пока не понимаю преимущества использования исходников или библиотеки dll. но для себя я задал задачу использовать именно dll, так как я обычно делаю это в своей сфере в другой среде. и тут с подключением dll возникли вопросы. я конечно искал информацию в интернете и на официальных сайтах sqlite интересная статью прочел здесь https://www.rsdn.org/article/com/introcom.xml#EKD , но до конца не все понял, поэтому обратился на форум, тут есть и хорошие советы, но есть и не очень. Добавлено через 3 минуты
0
|
|||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,831
|
||
| 20.10.2022, 14:24 | ||
|
Динамическая загрузка хороша, например, для организации plugins, а вот такие объемные по интерфейсу библиотеки как sqlite лучше связывать во время сборки (иначе замучаетесь описывать загруженные функции, а реальной пользы от этого около нуля).
0
|
||
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
||
| 20.10.2022, 16:31 [ТС] | ||
|
0
|
||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,831
|
||
| 20.10.2022, 16:47 | ||
|
Таким образом нужно будет протащить каждую функцию (из нужных естественно). Добавлено через 4 минуты По поводу линковки библиотеки: Там же в пункте 2) указал куда прописывать библиотеку в CodeBlocks, а в посте #28 как ее собрать. Прописываете без префикса lib и расширения. Т.е. если библиотека импорта называется libsqlite3.a, то вписать в окошко надо sqlite3.Путь к ней тоже указываете в соседней вкладке Search Directories -> Linker.
0
|
||
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
||
| 21.10.2022, 03:14 [ТС] | ||
|
С учетом всего вышеописанного оба варианта получились, пока вызов sqlite3_open, но остальное(вызов прочих процедур) уже ясно.
eclipse c++ у меня тоже не взлетело слишком сложно без понимания. codeBlocks я настроил сам, собственно нужно было прочитать что существует компилятор( сборщик, линковщик и т.д. сейчас мне за терминологию спросят ) minGW для win , указать путь в настройках программы к нему, ну еще добавил в переменную PATH, поскольку без этого программы работали только в среде разработки, отдельно консольное приложение не собиралось.
0
|
||
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
|||||||
| 23.10.2022, 03:51 [ТС] | |||||||
|
полдня читал про using , несколько способов применения(объявление, директива) вот не нашел или не понял про данный пример. так то понимаю, что тут идет обозначение типа значения возвращаемого функцией sqlite3_open и дальше идет даже приведения типа (sqlite3_open*) , но что это за формат записи
0
|
|||||||
|
Вездепух
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,343
|
|||
| 23.10.2022, 04:19 | |||
|
Например, функция int foo(char *name, double value) имеет тип int (char *, double). Функция int bar(char *file, double resolution) имеет тот же самый тип.= лишь косметический синтаксический элемент в таком объявлении. Оно говорит, что имя sqlite3_open_t будет синонимом для типа int(const char *, sqlite3 **).
1
|
|||
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
|
| 23.10.2022, 12:01 [ТС] | |
|
0
|
|
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
|||||||
| 26.10.2022, 14:11 [ТС] | |||||||
|
все получается. но как я понял при такой варианте подключения библиотеки нужно описывать вызов каждой функции.
я описал функцию открытия бд, функцию выбора записей а перебор результата - не описывал. ошибок компиляции нет, результат вышел без ошибок. хм. почему?
the database GRServer.sdb has been opened(created) successfully! 8 lines were output Process returned 0 (0x0) execution time : 0.031 s Press any key to continue. Добавлено через 2 минуты
0
|
|||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,831
|
||
| 26.10.2022, 14:42 | ||
|
0
|
||
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
|||
| 26.10.2022, 14:53 [ТС] | |||
|
Добавлено через 2 минуты а sqlite3_step- нет
0
|
|||
|
2 / 1 / 0
Регистрация: 04.11.2021
Сообщений: 63
|
||
| 26.10.2022, 15:04 [ТС] | ||
|
да подключена в проект, а когда была не подключена , то LoadLibrary("sqlite3.dll") было недостаточно для работы , вызываемые функции не находились, поэтому была dll подключена в проект. так ?
0
|
||
| 26.10.2022, 15:04 | |
|
Явная загрузка .dll
явная загрузка dll Явная загрузка DLL Явная загрузка DLL из ДРУГОЙ DLL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|