Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: test_mysql.cpp:11: ошибка: нет декларации ‘mysql_connect’ в этой области видимос  (Прочитано 1343 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alegz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
Доброго времени суток.
У меня Кубнта 8,10.
Установлен LAMP. Так же библиотеки mysql (пакет libmysqlclient10.deb или что-то такое).

Мне надо написать библиотеку. Там применяется C API. Пишу там #include <mysql/mysql.h>. И мне g++ выдал "test_mysql.cpp:11: ошибка: нет декларации ‘mysql_connect’ в этой области видимости". Я думал я что-то недопонял и написал другой код простой и примитивный. Он только осуществляет соединение с базой данных. Надо было просто проверить ф-цию.
Вот код:

#include <iostream>
#include <mysql/mysql.h>

using namespace std;

int main()
{
MYSQL *mysql;

mysql_connect(mysql, "localhost", "root", "rfhnjirf");

return 0;
}

Затем происходит следующее:
root@alegz:~/WebServer/soft.linugz.uz/cgi-bin# g++ test_mysql.cpp
test_mysql.cpp: In function ‘int main()’:
test_mysql.cpp:11: ошибка: нет декларации ‘mysql_connect’ в этой области видимости

Я был по меньшей мере удивлён этим результатом залез в /usr/include/mysql/mysql.h .
Нашёл объявление ф-ции. Вот этот кусок:

...
#define MYSQL_NO_DATA        100
#define MYSQL_DATA_TRUNCATED 101

#define mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT)

#ifdef USE_OLD_FUNCTIONS
MYSQL * STDCALL mysql_connect(MYSQL *mysql, const char *host,
      const char *user, const char *passwd);
int STDCALL mysql_create_db(MYSQL *mysql, const char *DB);
int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB);
#define mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT)
#endif
...

Как видно из кода все объявления имеються. Либо я чё-то упустил. Либо я глюк поймал. Подскажите пожалуйста. Заранее благодарен.

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 17.10
    • Просмотр профиля
Я не знаю, что там конкретно не так, но mysql_connect внутри #ifdef USE_OLD_FUNCTIONS ... #endif не наводит ни на какие мысли? Ты похоже пытаешься использовать какие-то устаревшие методы, т.е. читай документацию и примеры. В конкретно этом случае попробуй определить этот самый макрос.

Оффлайн Alegz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
Я не знаю, что там конкретно не так, но mysql_connect внутри #ifdef USE_OLD_FUNCTIONS ... #endif не наводит ни на какие мысли? Ты похоже пытаешься использовать какие-то устаревшие методы, т.е. читай документацию и примеры. В конкретно этом случае попробуй определить этот самый макрос.

Млин!!! Во я чайник!!! Спасибо!!! Я чё-то не обратил внимание на #ifdef USE_OLD_FUNCTIONS. Спасибо.  :)

Оффлайн PaulKaz

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
просто используй mysql_real_connect(...)

Оффлайн Alegz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
просто используй mysql_real_connect(...)

Я так и сделал.  :)

 

Страница сгенерирована за 0.082 секунд. Запросов: 24.