Я даже не знаю, с чего начать объяснение, если честно. Создание этого было огромной болью.
Прежде чем вы начнете читать это, убедитесь, что у вас есть следующее:
- C: \ boost
- C: \ OpenSSL-Win32
- C: \ OpenSSL-Win64
Поскольку я писал свою собственную «оболочку» и пытался заставить UNICODE работать должным образом, я получал странные исключения и не мог ничего отладить, потому что я скачал последний пакет, который собран без отладочной информации (https://dev.mysql.com/downloads/connector/cpp/)
Это первый раз, когда я пытаюсь построить это, поэтому я пошел в их репозиторий Github и взял последний «мастер»: https://github.com/mysql/mysql-connector-cpp
НО! Он не содержит источника "JDBC" s, который, кстати, является "родным" соединителем, как они его называют. Поэтому я взял его из ветки: https://github.com/mysql/mysql-connector-cpp/tree/jdbc, а затем скопировал файлы в «mysql-connector-cpp-master \ jdbc».
OK. Я открыл « x64 Командная строка Native Tools для VS 2017 » и перешел к « mysql-connector-cpp-master ». На данный момент я все еще не знал, что я делаю и как это сделать, все, что я мог понять из документации и других статей, это запустить:
cmake -DWITH_JDBC=ON --build .
Это начало настраивать вещи и строить ОК, но на этом остановилось:
-- Searching for static libraries with the base name(s) "mysqlclient"
CMake Error at FindMySQL.cmake:524 (message):
Could not find "mysql.h" from searching "/usr/include/mysql
/usr/local/include/mysql /opt/mysql/mysql/include
/opt/mysql/mysql/include/mysql /usr/local/mysql/include
/usr/local/mysql/include/mysql C:\Program Files/MySQL/*/include
C:/MySQL/*/include"
Call Stack (most recent call first):
CMakeLists.txt:332 (INCLUDE)
OK. Так что теперь ... где находится "mysql.h" ?! После поиска ... и поиска я нашел это: Отсутствует mysql.h и пытаюсь найти mysql-devel
И я цитирую:
Возьмите MySQL Community Server и установите его в своей системе. Это
содержит каталог с именем include, в котором вы найдете mysql.h.
Хорошо, отлично, нам нужно больше вещей. Поэтому я загружаю: https://dev.mysql.com/downloads/mysql/ и снова запускаю команду.
Счастливого дня, что-то случилось, но пока нет. Однако я получил решение VS 2017 под названием: "MYSQLCPPCONN.sln".
Содержит конфигурацию VS 2017 для сборки библиотеки для Win32. И, конечно же, попытка построить это решение даст вам МНОГО неразрешенных внешних символов.
Итак, я снова запускаю cmake, но с добавленной статической опцией:
cmake -DWITH_JDBC=ON -DBUILD_STATIC=ON --build .
На этот раз, когда я открываю "MYSQLCPPCONN.sln", я вижу другой проект "mysqlcppconn-static", и он прекрасно работает без проблем.
Однако в моем случае мне нужен x64. Я только что создал новую конфигурацию для x64, скопировав существующую конфигурацию из Win32.
Итак, у меня есть и Win32, и x64 "mysqlcppconn-static.lib".
Общий вывод на данный момент:
- Довольно сложно построить, без опыта вы потратите некоторое время ...
время.
- Нет надлежащей документации, их существующая документация плохо
написано и очень запутанно.
- Нет поддержки UNICODE, да проекты компилируются как Многобайтовые
Набор символов .
Я посмотрю, смогу ли я отладить и выясню, почему я получаю исключения в библиотеке при использовании этого (из их документации):
sql::ConnectOptionsMap connection_properties;
connection_properties["hostName"] = "";
connection_properties["port"] = "";
connection_properties["userName"] = "";
connection_properties["password"] = "";
connection_properties["schema"] = "";
connection_properties["OPT_CONNECT_TIMEOUT"] = 10;
connection_properties["CLIENT_MULTI_STATEMENTS"] = (true);
connection_properties["OPT_CHARSET_NAME"] = "utf8";
connection_properties["OPT_SET_CHARSET_NAME"] = "utf8";
Я надеюсь, что вы сможете построить свою библиотеку с этой информацией, и, надеюсь, в будущем она станет более простой и понятной.
Удачи.