Как исправить ошибку: "LNK2019 ссылка на неразрешенный внешний символ"?
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.60] |
|
|
| Страницы: (6) 1 2 [3] 4 5 ... Последняя » все ( Перейти к последнему сообщению ) |
Как исправить ошибку: "LNK2019 ссылка на неразрешенный внешний символ"?
|
Сообщ.
#31
,
|
|
|
|
|
|
|
|
|
|
Цитата Majestio @ Вроде бы и правильная но положа честную руку на горячее сердце - боюсь соврать. С Дазами Банных я обычно работал только средствами Qt. Предлагаю тебе воспользоваться "антисанкциями", выкачать и установить себе SQL-клиент Navicat. А вот уже в нём настрой нужный коннект, "увидь" таблицы, и только потом тестируй свою прогу. А то может случиться ситуация что просто проблемсы с БД. Не ленись - проверь!Качнул и установил Navicat, и вот что он говорит при попытки подключиться к БД: "1130 - Host '169...' is not allowed to connect to this MySQL server". То есть, получатся, что, сам сервер не разрешает подключиться? |
|
Сообщ.
#33
,
|
|
|
|
Цитата DDim1000 @ То есть, получатся, что, сам сервер не разрешает подключиться? Ну да, получается что так. Поработай с настройками сервера, постарайся получить коннект с помощью Navicat. И только после этого возвращайся к кодированию. |
|
Сообщ.
#34
,
|
|
|
|
Кстати ... если у тебя проблемсы с MySQL-сервером, а они явно у тебя есть - рекомендую тебе просто ужасно-прекрасную софтину Open Server. Да, сия софтина обычно используется для web-разработок. Тем не менее, в её составе есть полноценные версии MySQL и PostgreSQL, практически готовые сразу после установки. Очень очень рекомендую. Сам пользую уже лет 10, и вааще доволен.
|
|
Сообщ.
#35
,
|
|
|
|
Цитата DDim1000 @ 1130 - Host '169...' is not allowed to connect to this MySQL server 1. Смотри есть ли права доступа у данного пользователя на подключение к конкретному хосту или к любому (в таблице mysql.user). Если нет - то дай права через grant all priveleges 2. Проверь что mysql забинден на нужный интерфейс. Или слушает все. в bind-address = 0.0.0.0 |
|
Сообщ.
#36
,
|
|
|
|
Цитата sharky72 @ Цитата DDim1000 @ У меня возник вопрос: может я вообще делаю ни так? В общем, у меня есть задача: нужно подключиться к базе данных котора находиться на веб-хостинге. Дак, у меня правильная логика программы, или нет? В смысле работы с Mysql? Ну да. Создали коннектор. Задали строку соединения и логин/пароль. Вызвали метод соединения, обработали исключение в случае ошибки. Только я бы все таки не стал вызывать соединение из конструктора. Можно, но некрасиво из за того что там бросаются исключения в случае ошибок и isConnected() в данном случае не нужен P.S. Я до сих пор использую dbForge Studio for MySql 9 (2020) пока она была бесплатной для некоммерческого использования Установил локальный сервер, установил Navicat Premium, создал БД. Но мая программа не может подключиться к базе данны, пишет: MySQL Error: Unable to connect to HчЇФи:3306 Что можно сделать? ![]() ![]() #include <iostream> #include <memory> #include <mysql_driver.h> #include <mysql_connection.h> #include <cppconn/driver.h> #include <cppconn/exception.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> #include <cppconn/prepared_statement.h> //using namespace std; class MySQLConnection { private: std::unique_ptr<sql::Connection> connection; public: MySQLConnection(const std::string& host, int port, const std::string& user, const std::string& password, const std::string& database) { sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance(); std::string connectionString = "tcp://" + host + ":" + std::to_string(port); connection.reset(driver->connect(connectionString, user, password)); connection->setSchema(database); } void executeQuery(const std::string& query) { std::unique_ptr<sql::Statement> stmt(connection->createStatement()); std::unique_ptr<sql::ResultSet> res(stmt->executeQuery(query)); while (res->next()) { // Обработка результатов std::cout << "Результат: " << res->getString(1) << std::endl; } } bool isConnected() { return connection.get() != nullptr && !connection->isClosed(); } }; int main() { setlocale(LC_ALL, "Russian"); try { MySQLConnection db( "locolhost", // host 3306, "root", // your_username "", // your_password "school" // your_database ); if (db.isConnected()) { std::cout << "Подключение установлено успешно!" << std::endl; db.executeQuery("SELECT VERSION()"); } } catch (sql::SQLException& e) { std::cerr << "MySQL Error: " << e.what() << std::endl; } return 0; } |
|
Сообщ.
#37
,
|
|
|
|
Самое простое попробуйте. Наберите в браузере http://HчЇФи:3306 и посмотрите на ответ. Если сервер работает по этому адресу, тогда вы увидите ошибку в протоколе рукопожатия в браузере, а если нет -- страницу: нет доступа.
В зависимости от этого и надо будет решать проблему. 1) Ошибка в браузере есть т.е. сервер работает и отвечает. Тогда надо смотреть на то, чтобы отправляет ему коннектор. 2) Ошибка в браузере, что нет сервера. Тогда проверяем настройки у mysql. Обычно там стоит строго 127.0.0.1:3306 и к нему не подключиться даже через v6 |
|
|
|
|
|
Цитата macomics @ Самое простое попробуйте. Наберите в браузере http://HчЇФи:3306 и посмотрите на ответ. Если сервер работает по этому адресу, тогда вы увидите ошибку в протоколе рукопожатия в браузере, а если нет -- страницу: нет доступа. В зависимости от этого и надо будет решать проблему. 1) Ошибка в браузере есть т.е. сервер работает и отвечает. Тогда надо смотреть на то, чтобы отправляет ему коннектор. 2) Ошибка в браузере, что нет сервера. Тогда проверяем настройки у mysql. Обычно там стоит строго 127.0.0.1:3306 и к нему не подключиться даже через v6 Сообщние в браузере: Не удается получить доступ к сайту Проверьте, нет ли опечаток в имени хоста xn--h-ptb9al4f. Если все правильно, воспользуйтесь инструментом "Диагностика сетей Windows". DNS_PROBE_FINISHED_NXDOMAIN |
|
Сообщ.
#39
,
|
|
|
|
А вы все сделали как вам советовали?
1. Как сказал Qraizer запустить в релизе 2. Как советовал я - поставить отладочную версию mysql сonnector и запустить в дебаге. Ибо похоже дебаг проект и релиз dll у вас не дружат. 3. "locolhost" это что-то жутко интересное... Интересно будет узнать что это.ЗЫ. QTешников не спрашивали Они вообще не в зуб ногой в кроме своего фреймворка |
|
Сообщ.
#40
,
|
|
|
|
Цитата DDim1000 @ Проверьте, нет ли опечаток в имени хоста xn--h-ptb9al4f. Это означает, что по внешнему ip порт не доступен (2 вариант). Значит проверяйте настройки сервера mysql. Скорее всего, к нему можно подключиться строго через 127.0.0.1:3306 Добавлено Хотя надо еще попробовать локальный ip компьютера вместо dns |
|
|
|
|
|
Цитата sharky72 @ А вы все сделали как вам советовали? 1. Как сказал Qraizer запустить в релизе 2. Как советовал я - поставить отладочную версию mysql сonnector и запустить в дебаге. Ибо похоже дебаг проект и релиз dll у вас не дружат. 3. "locolhost" это что-то жутко интересное... Интересно будет узнать что это.ЗЫ. QTешников не спрашивали Они вообще не в зуб ногой в кроме своего фреймворка ![]() Когда я преключаю на Release, сразу появляются куча ошибок. https://disk.yandex.ru/i/JL2VqnRFCuZPYA |
|
Сообщ.
#42
,
|
|
|
|
Цитата macomics @ К слову: 127.0.0.1 отнюдь не то же самое, что локальный IP. Хотя надо еще попробовать локальный ip компьютера вместо dns |
|
Сообщ.
#43
,
|
|
|
|
Цитата sharky72 @ ЗЫ. QTешников не спрашивали Они вообще не в зуб ногой в кроме своего фреймворка |
|
Сообщ.
#44
,
|
|
|
|
Цитата Qraizer @ К слову: 127.0.0.1 отнюдь не то же самое, что локальный IP. Именно потому, что это разные адреса я про это и сказал. Доступ по dns может отсутствовать из-за недоступности локального ip за роутером. Но вот если и с локальным ip будет тот же ответ, тогда значит, что mysql слушает только 127.0.0.1 (localhost, но только по v4). |
|
|
|
|
|
А вот через Комадную строку все работает.
![]() ![]() Microsoft Windows [Version 10.0.19045.6332] (c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. C:\Windows\system32>D: D:\>cd Programming\Servers\xampp\mysql\bin D:\Programming\Servers\xampp\mysql\bin>mysql.exe -h localhost --port=3306 -u root --password Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.4.32-MariaDB mariadb.org binary distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2025-09-28 20:11:06 | +---------------------+ 1 row in set (0.000 sec) MariaDB [(none)]> |