Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] mysql - problem przy pierwszej kompilacji

Ostatnio zmodyfikowano 2013-07-29 14:56
Autor Wiadomość
megatron
Temat założony przez niniejszego użytkownika
[C++] mysql - problem przy pierwszej kompilacji
» 2013-07-27 14:46:48
Witam serdecznie.
Chcę stworzyć nowy projekt łączący się z db mysql, lecz napotykam problem już na początku.
Podczas kompilacji projektu otrzymuje logi:

mingw32-g++.exe -Wall -fexceptions  -g  -std=c++11 -std=c++0x -Wall -g    -c D:\programowanie\projekty\mysql\main.cpp -o obj\Debug\main.o
In file included from d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql_version.h:19:0,
                 from d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql.h:58,
                 from D:\programowanie\projekty\mysql\main.cpp:1:
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/ndb_version.h:109:3: error: stray '@' in program
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/ndb_version.h:109:3: error: stray '@' in program
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/ndb_version.h:109:3: error: stray '@' in program
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/ndb_version.h:109:3: error: stray '@' in program
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/ndb_version.h:109:3: error: stray '@' in program
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/ndb_version.h:109:3: error: stray '@' in program
In file included from d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql.h:58:0,
                 from D:\programowanie\projekty\mysql\main.cpp:1:
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql_version.h:43:2: error: invalid preprocessing directive #endi
In file included from d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql.h:58:0,
                 from D:\programowanie\projekty\mysql\main.cpp:1:
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql_version.h:17:0: error: unterminated #ifndef
In file included from d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql.h:57:0,
                 from D:\programowanie\projekty\mysql\main.cpp:1:
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql_com.h:116:3: error: 'SOCKET' does not name a type
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql_com.h:180:16: error: 'SOCKET' was not declared in this scope
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql_com.h:180:29: error: expected primary-expression before 'const'
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql_com.h:180:58: error: expected primary-expression before 'unsigned'
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql_com.h:181:9: error: expected primary-expression before 'unsigned'
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql_com.h:181:29: error: expression list treated as compound expression in initializer [-fpermissive]
In file included from d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql_version.h:19:0,
                 from d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/mysql.h:58,
                 from D:\programowanie\projekty\mysql\main.cpp:1:
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/ndb_version.h: In function 'int ndb_check_prep_copy_frag_version(Uint32)':
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/ndb_version.h:109:18: error: 'NDB_VERSION_MAJOR' was not declared in this scope
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/ndb_version.h:109:18: error: 'NDB_VERSION_MINOR' was not declared in this scope
d:\programowanie\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/ndb_version.h:109:18: error: 'NDB_VERSION_BUILD' was not declared in this scope
D:\programowanie\projekty\mysql\main.cpp: At global scope:
D:\programowanie\projekty\mysql\main.cpp:3:25: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
D:\programowanie\projekty\mysql\main.cpp:4:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
D:\programowanie\projekty\mysql\main.cpp:5:29: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
D:\programowanie\projekty\mysql\main.cpp:6:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
D:\programowanie\projekty\mysql\main.cpp:7:32: error: 'NULL' was not declared in this scope
D:\programowanie\projekty\mysql\main.cpp:8:27: error: 'NULL' was not declared in this scope
D:\programowanie\projekty\mysql\main.cpp: In function 'int main()':
D:\programowanie\projekty\mysql\main.cpp:14:24: error: 'NULL' was not declared in this scope
Process terminated with status 1 (0 minutes, 0 seconds)
20 errors, 4 warnings (0 minutes, 0 seconds)
natomiast kod wyglada następujaco:
C/C++
#include <mysql.h>

static char * sql_host = "localhost";
static char * sql_username = "***";
static char * sql_password = "";
static char * sql_db = "***";
static unsigned int sql_port = NULL;
static char * sql_socket = NULL;
static unsigned int sql_flags = 0;
static MYSQL * conn;

int main()
{
    conn = mysql_init( NULL );
    mysql_real_connect( conn, sql_host, sql_username, sql_password, sql_db, sql_port, sql_socket, sql_flags );
   
    return 0;
}

Wiem, że nie zbyt wiele to mówi, ponieważ jest to tylko połączenie z db.
Problem występuje tuż po dodaniu pliku nagłówkowego i przenosi mnie do pliku ndb_version.h.

Z góry dziękuję za pomoc i pozdrawiam.
P-88905
Mrovqa
» 2013-07-27 14:50:54
Błąd jest w plikach nagłówkowych (patrz logi), więc dlaczego wklejasz zły plik? Wklej te fragmenty plików (wskazana linia + parę z góry i dołu), które powodują błąd.
P-88906
megatron
Temat założony przez niniejszego użytkownika
» 2013-07-27 14:53:41
błąd pokazuje w tej linijce:
if( version == NDB_VERSION_D )

C/C++
static
inline
int
ndb_check_prep_copy_frag_version( Uint32 version )
{
    const Uint32 major =( version >> 16 ) & 0xFF;
    const Uint32 minor =( version >> 8 ) & 0xFF;
   
    if( version == NDB_VERSION_D )
         return 2;
   
    if( major >= 6 )
    {
        if( minor == 2 )
        {
            if( version >= NDBD_PREPARE_COPY_FRAG_V2_62 )
                 return 2;
           
            if( version >= NDBD_PREPARE_COPY_FRAG_VERSION )
                 return 1;
           
            return 0;
        }
        else if( minor == 3 )
        {
            if( version >= NDBD_PREPARE_COPY_FRAG_V2_63 )
                 return 2;
           
            return 1;
        }
        return 2;
    }
    else if( major == 5 && minor == 1 )
    {
        if( version >= NDBD_PREPARE_COPY_FRAG_V2_51 )
             return 2;
       
    }
   
    return 0;
}
P-88907
MrPoxipol
» 2013-07-27 14:53:52
Spróbuj skompilować za pomocą gcc (po prostu zmien rozszerzenie na .c) i na pewno wszystko dobrze zaincludowales?
P-88908
megatron
Temat założony przez niniejszego użytkownika
» 2013-07-27 15:26:00
na pewno wszystko dobrze zaincludowales?
sam nie jestem pewien...
folder include i lib to zapewne bez problemów ale nie jestem pewien do ustawień
do linker options dodałem -libs -lmysql może trzeba dodać coś jeszcze.
narazie szukam.
jak ktoś ma pomysł to proszę pisać
P-88909
Mrovqa
» 2013-07-27 15:36:41
error: stray '@' in program
Wygląda na niedozwolone znaki w kodzie.

error: invalid preprocessing directive #endi
#endif
...

error: unterminated #ifndef
#ifndef MAKRODEFINICJA
...

error: 'SOCKET' does not name a type
error: 'SOCKET' was not declared in this scope
(...)
error: 'NDB_VERSION_MAJOR' was not declared in this scope
error: 'NDB_VERSION_MINOR' was not declared in this scope
error: 'NDB_VERSION_BUILD' was not declared in this scope
Brakujący
#include
?

error: expected primary-expression before 'const'
error: expected primary-expression before 'unsigned'
error: expected primary-expression before 'unsigned'
error: expression list treated as compound expression in initializer [-fpermissive]
Yyy... Błędy składniowe.

error: 'NULL' was not declared in this scope
Geniusz...
#define NULL 0

Skąd wziąłeś ten kod? Jeżeli to zewnętrzna biblioteka dla twojej architektury, systemu operacyjnego i kompilatora, to na pewno przez kogoś nieumiejętnego zmodyfikowana.
P-88910
megatron
Temat założony przez niniejszego użytkownika
» 2013-07-27 15:45:06
jeśli chodzi ten pierwszy kod to z jednego kursu, a jeśli ten drugi z biblioteki to raczej nikt nic nie grzebał

dam może mniejszy log:

mingw32-g++.exe -Wall -fexceptions -fpermissive  -g  -std=c++11 -std=c++0x -Wall -g   -I..\..\biblioteki_i_silniki\mysql\include\ -ID:\programowanie\biblioteki_i_silniki\mysql\include\  -c D:\programowanie\projekty\mysql\main.cpp -o obj\Debug\main.o
In file included from ..\..\biblioteki_i_silniki\mysql\include/mysql_version.h:19:0,
                 from ..\..\biblioteki_i_silniki\mysql\include/mysql.h:58,
                 from D:\programowanie\projekty\mysql\main.cpp:1:
..\..\biblioteki_i_silniki\mysql\include/ndb_version.h:109:3: error: stray '@' in program
..\..\biblioteki_i_silniki\mysql\include/ndb_version.h:109:3: error: stray '@' in program
..\..\biblioteki_i_silniki\mysql\include/ndb_version.h:109:3: error: stray '@' in program
..\..\biblioteki_i_silniki\mysql\include/ndb_version.h:109:3: error: stray '@' in program
..\..\biblioteki_i_silniki\mysql\include/ndb_version.h:109:3: error: stray '@' in program
..\..\biblioteki_i_silniki\mysql\include/ndb_version.h:109:3: error: stray '@' in program
In file included from ..\..\biblioteki_i_silniki\mysql\include/mysql.h:58:0,
                 from D:\programowanie\projekty\mysql\main.cpp:1:
..\..\biblioteki_i_silniki\mysql\include/mysql_version.h:43:2: error: invalid preprocessing directive #endi
In file included from ..\..\biblioteki_i_silniki\mysql\include/mysql.h:58:0,
                 from D:\programowanie\projekty\mysql\main.cpp:1:
..\..\biblioteki_i_silniki\mysql\include/mysql_version.h:17:0: error: unterminated #ifndef
In file included from ..\..\biblioteki_i_silniki\mysql\include/mysql.h:57:0,
                 from D:\programowanie\projekty\mysql\main.cpp:1:
..\..\biblioteki_i_silniki\mysql\include/mysql_com.h:116:3: error: 'SOCKET' does not name a type
..\..\biblioteki_i_silniki\mysql\include/mysql_com.h:180:16: error: 'SOCKET' was not declared in this scope
..\..\biblioteki_i_silniki\mysql\include/mysql_com.h:180:29: error: expected primary-expression before 'const'
..\..\biblioteki_i_silniki\mysql\include/mysql_com.h:180:58: error: expected primary-expression before 'unsigned'
..\..\biblioteki_i_silniki\mysql\include/mysql_com.h:181:9: error: expected primary-expression before 'unsigned'
..\..\biblioteki_i_silniki\mysql\include/mysql_com.h:181:29: warning: expression list treated as compound expression in initializer [-fpermissive]
In file included from ..\..\biblioteki_i_silniki\mysql\include/mysql_version.h:19:0,
                 from ..\..\biblioteki_i_silniki\mysql\include/mysql.h:58,
                 from D:\programowanie\projekty\mysql\main.cpp:1:
..\..\biblioteki_i_silniki\mysql\include/ndb_version.h: In function 'int ndb_check_prep_copy_frag_version(Uint32)':
..\..\biblioteki_i_silniki\mysql\include/ndb_version.h:109:18: error: 'NDB_VERSION_MAJOR' was not declared in this scope
..\..\biblioteki_i_silniki\mysql\include/ndb_version.h:109:18: error: 'NDB_VERSION_MINOR' was not declared in this scope
..\..\biblioteki_i_silniki\mysql\include/ndb_version.h:109:18: error: 'NDB_VERSION_BUILD' was not declared in this scope
D:\programowanie\projekty\mysql\main.cpp: In function 'int main()':
D:\programowanie\projekty\mysql\main.cpp:5:65: error: 'printf' was not declared in this scope
P-88911
Mrovqa
» 2013-07-27 22:43:22
Nie wiem jaki sens jest podawać to samo, tylko nieco okrojone. Te błędy występują w plikach biblioteki i sądząc po niektórych błędach ktoś musiał grzebać w nich i je uszkodzić. Po prostu ściągnij oficjalną paczkę z biblioteką, albo popraw aktualne nagłówki. Zalecam tę pierwszą opcję.
P-88919
« 1 » 2
  Strona 1 z 2 Następna strona