- PVSM.RU - https://www.pvsm.ru -
Я использую PostgreSQL 12-й версии! На остальных не проверял! Соответственно, он у вас должен быть скачан и настроен для использования.
Загрузите Wt из официального репозитория [1].
Установите подходящую версию (например, msvs2022 x64
).
Убедитесь, что у вас выбраны пути установки по умолчанию (например, C:Program FilesWt 4.11.1 msvs2022 x64
).
Переключите режим сборки в Visual Studio на Debug или Release:
В меню Проект → Свойства → Конфигурация
А также просто на панели инструментов:
Откройте Свойства проекта → C/C++ → Общие.
В поле Дополнительные каталоги включаемых файлов добавьте:
C:Program FilesWt 4.11.1 msvs2022 x64include
Нажмите Применить.
Включите библиотеку в ваш код:
#include <iostream>
#include <Wt/Dbo/Dbo.h>
int main(){
std::cout << "Hello World!" << std::endl;
return 0;
}
Если Visual Studio не подсвечивает её красным, значит, компилятор смог найти заголовочные файлы. Это означает, что шаги по настройке каталогов включаемых файлов выполнены правильно.
Важно! На данном этапе проект ещё не готов к полноценному использованию библиотеки. Компилятор только обнаружил заголовочные файлы, но функции из Wt использовать всё ещё нельзя, так как не настроены пути к библиотекам и их подключение.
Откройте Свойства проекта → Компоновщик → Общие.
В поле Дополнительные каталоги библиотек добавьте:
C:Program FilesWt 4.11.1 msvs2022 x64lib
Откройте Компоновщик → Ввод → Дополнительные зависимости.
Убедитесь, что там уже есть стандартные зависимости:
$(CoreLibraryDependencies);%(AdditionalDependencies)
Перед этими зависимостями добавьте зависимости Wt в зависимости от конфигурации:
Для Debug (d в конце названия указывает на Debug):
wtdbod.lib;wtdbopostgresd.lib;
Для Release:
wtdbo.lib;wtdbopostgres.lib;
Итоговая строка должна выглядеть, например, так:
wtdbod.lib;wtdbopostgresd.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)
Откройте Панель управления → Система и безопасность → Система → Дополнительные параметры системы.
В разделе Переменные среды найдите переменную Path
.
Добавьте путь к каталогу bin
Wt:
C:Program FilesWt 4.11.1 msvs2022 x64bin
Нажмите OK, чтобы сохранить изменения.
Перезапустите Visual Studio, чтобы переменные среды обновились!
Чтобы понять что всё работает вставим следующий код:
#include <iostream>
#include <Wt/Dbo/Dbo.h>
#include <Wt/Dbo/backend/Postgres.h>
#include <Windows.h>
using namespace std;
class TestTable {
public:
string name;
int value;
template<class Action>
void persist(Action& a) {
Wt::Dbo::field(a, name, "name");
Wt::Dbo::field(a, value, "value");
}
};
int main() {
setlocale(0, ""); // костыль для русского языка в консоли
SetConsoleCP(65001); // два костыля для перевода exception'ов от библиотеки
SetConsoleOutputCP(65001);
try {
string connectionString =
"host=localhost "
"port=5432 "
"dbname=test2 "
"user=postgres "
"password=1234";
auto postgres = make_unique<Wt::Dbo::backend::Postgres>(connectionString);
Wt::Dbo::Session session;
session.setConnection(move(postgres));
session.mapClass<TestTable>("test_table");
{
Wt::Dbo::Transaction transaction(session);
session.execute("SET CLIENT_ENCODING TO 'WIN1251';"); // костыль для отправки русских символов в БД
session.createTables();
cout << "Таблица 'test_table' создана или уже существует." << endl;
}
{
Wt::Dbo::Transaction transaction(session);
auto newRecord = session.add(make_unique<TestTable>(TestTable{ "Аркадий", 42 }));
cout << "Запись добавлена: name = " << newRecord->name
<< ", value = " << newRecord->value << endl;
transaction.commit();
}
}
catch (const exception& ex) {
cerr << "Ошибка: " << ex.what() << endl;
}
return 0;
}
Постройте и выполните проект.
Переключение Debug/Release:
Для каждой конфигурации вручную перепроверьте дополнительные зависимости (Debug требует d
-версии библиотек).
Проблемы с wtdbo.dll:
Если при запуске программа выдаёт ошибку "не обнаружена wtdbo.dll":
Проверьте, что файл wtdbo.dll
(или wtdbod.dll
для Debug) находится в C:Program FilesWt 4.11.1 msvs2022 x64bin
.
Либо добавьте этот путь в переменную среды Path
, либо скопируйте DLL в ту же папку, где находится ваш исполняемый файл (но это костыли).
Отладка PostgreSQL:
Убедитесь, что PostgreSQL запущен, и все параметры подключения (хост, порт, база данных, пользователь, пароль) верны.
Кириллица и С++:
Вообще не советую, но пример выше в коде :)
Теперь ваш проект с Wt должен работать корректно! Если кто знает как делать всё это без костылей на костыльной ОП, то жду ваших комментариев:)
Автор: llouqs
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/postgresql/402840
Ссылки в тексте:
[1] официального репозитория: https://github.com/emweb/wt/releases/tag/4.11.1
[2] Источник: https://habr.com/ru/articles/859894/?utm_source=habrahabr&utm_medium=rss&utm_campaign=859894
Нажмите здесь для печати.