URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 6626
[ Назад ]

Исходное сообщение
"проблема с mysql"

Отправлено Ser , 27-Май-01 02:42 
пытаюсьоткомпилить прогу:
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
  MYSQL mysql;
  MYSQL_RES *res;
  MYSQL_ROW row;
  void exiterr(int exitcode)
  {
    //fprintf(stderr, "%s\n", mysql_error(&mysql));
    exit(exitcode);
  }
  int main()
  {
    uint i = 0;
    if (!(mysql_connect(&mysql,"127.0.0.1","root","")))
       exiterr(1);
    if (mysql_select_db(&mysql,"test")) exiterr(2);
    if (mysql_query(&mysql,"SELECT * FROM users"))
       exiterr(3);
    if (!(res = mysql_store_result(&mysql))) exiterr(4);
    while((row = mysql_fetch_row(res))) {
      for (i=0 ; i < mysql_num_fields(res); i++)
        printf("%s\n",row[i]);
    }
    if (!mysql_eof(res)) exiterr(5);
    mysql_free_result(res);
    mysql_close(&mysql);
  }

получаю:

[ser@ihg prog]$ cc mysql.c
/tmp/cchq4l2S.o: In function `main':
/tmp/cchq4l2S.o(.text+0x3e): undefined reference to `mysql_connect'
/tmp/cchq4l2S.o(.text+0x66): undefined reference to `mysql_select_db'
/tmp/cchq4l2S.o(.text+0x8e): undefined reference to `mysql_query'
/tmp/cchq4l2S.o(.text+0xb1): undefined reference to `mysql_store_result'
/tmp/cchq4l2S.o(.text+0xe0): undefined reference to `mysql_fetch_row'
/tmp/cchq4l2S.o(.text+0x111): undefined reference to `mysql_num_fields'
/tmp/cchq4l2S.o(.text+0x15c): undefined reference to `mysql_eof'
/tmp/cchq4l2S.o(.text+0x180): undefined reference to `mysql_free_result'
/tmp/cchq4l2S.o(.text+0x190): undefined reference to `mysql_close'
collect2: ld returned 1 exit status    


Содержание

Сообщения в этом обсуждении
"RE: проблема с mysql"
Отправлено nd , 27-Май-01 16:53 
А где определены функции mysql_* (прототипы которых видимо в mysql.h)? По всей видимости должна быть какая-то библиотека с ними, например libmysql.so (или .a - если статическая). Тогда надо что-то вроде
$ cc mysql.c -lmysql
Ну и с путями конечно надо посмотреть...

"RE: проблема с mysql"
Отправлено Dima , 27-Май-01 21:35 
Твоя прога просто не видит mysql.h
правильней было писать как #include <mysql.h>
а когда ты пишешь "mysql.h" он ищет в текущем каталоге.
если не то и не это не помогает просто укажи прямой путь к mysql.h
#include "/usr/include/mysql/mysql.h"
или как там должно быть у тебя
;)

"RE: проблема с mysql"
Отправлено Sergei , 28-Май-01 00:47 
НЕТ, ничего не помогает!

"RE: проблема с mysql"
Отправлено nd , 28-Май-01 03:22 
Чушь собачья!!! Ошибки выдаёт не компилятор, а линковщик (ld). При чём же здесь '#include' ?! При линковке не хватает об'ектника (или библиотеки, которая фактически является архивом об'ектников), содержащего код указанных функций.
К слову сказать, в C (но не в C++) прототипы функций вообще необязательны. То есть можно в программе ни одного '#include' не писать, если конечно какие-нибудь константы, макросы или переменные из них не использовать.

"RE: проблема с mysql"
Отправлено Dima , 30-Май-01 20:47 
use cc mysql.c -llibmysql

"RE: проблема с mysql"
Отправлено Partisan , 30-Май-01 21:23 
vsjo ravno rabotat ne budet - netu vyzova mysql_init ()

"RE: проблема с mysql"
Отправлено Sergei , 31-Май-01 02:14 
Причем тут вызовы! Поставил mysql из исходников, все столо нормально. Просто видимо в рпмах был кривой mysqlclient.so