Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

CODEBLOCKS - MYSQL - biblioteka

dram123 16 Paź 2013 19:29 1488 3
  • #1 16 Paź 2013 19:29
    dram123
    Poziom 11  

    Witam.

    Już mnie prawde mówiąc troszke wkurza temat mysql'a. Z góry przepraszam za drugi temat, jednakże tamten temat dotyczył mysql'a ale w dev c++.

    Po dłuższych przekonaniach (między innymi tym ,że dev c++ nie jest już wspierany) postanowiłem się przesiaść na code blocksa.

    Dobra dosyć gadania, zatem:

    pobrałem mysql-5.6.14-winx64.zip - rozpakowałem (ze strony głównej mysql'a jest to community server) (rozpakowałem od d:\programowanie\mysql\)

    Project > build options:
    search directories -> compiler:

    Cytat:
    D:\programowanie\mysql\include


    search directories -> linker:
    Cytat:
    D:\programowanie\mysql\lib


    Linker settings -> link libaries:
    Cytat:
    D:\programowanie\mysql\lib\libmysql.lib


    No i teraz tak:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Dodając do 'other link options' w zakładce linker options (w projekcie wszystko)
    Cytat:
    -lmysql


    Plik istnieje (libmysql.dll) ale
    Cytat:

    D:\programowanie\mysql\lib/libmysql.dll: file not recognized: File format not recognized

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Tutaj kod, od razu powiem że wziąłem go z jakiegoś tematu na tym forum do testów jak szukalem rozwiazania swojego problemu.

    Pozdrawiam.

    Bez "-lmysql" build log:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0 3
  • #2 17 Paź 2013 12:49
    Akane
    Poziom 27  

    Skopiuj, zmień nazwę, lub utwórz hardlink/symlink do pliku libmysql.lib pod nową nazwą libmysql.a, a wtedy zadziała. Linker gnu nie wie, co to jest za plik *.lib, choć ma prawie identyczny format jak linuksowe *.a.

    Dev-cpp jest ponownie wspierany od kilku miesięcy, jakby co.

    0
  • #3 17 Paź 2013 13:49
    dram123
    Poziom 11  

    Jest to windows 7 (gdyby to było potrzebne)

    w /lib/ z libmysql.lib (skopiowałem i zmieniłem nazwe) na libmysql.a

    Czyli w tym katalogu są pliki libmysql.lib i libmysql.a

    W linkerze ścieżka (link libraries) do : D:\programowanie\mysql\lib\libmysql.a

    No i efekt ten sam czyli:

    -------------- Build: default in Projekt2 (compiler: GNU GCC Compiler)---------------

    mingw32-g++.exe -ID:\programowanie\mysql\include -c D:\programowanie\dev-c++\project2_mysql\main.cpp -o .objs\project2_mysql\main.o
    mingw32-g++.exe -LD:\programowanie\mysql\lib -o Projekt2_mysql.exe .objs\project2_mysql\main.o D:\programowanie\mysql\lib\libmysql.lib D:\programowanie\mysql\lib\libmysqld.lib D:\programowanie\mysql\lib\mysqlclient.lib D:\programowanie\mysql\lib\mysqlserver.lib D:\programowanie\mysql\lib\mysqlservices.lib D:\programowanie\mysql\lib\libmysql.a
    .objs\project2_mysql\main.o:main.cpp:(.text+0x68): undefined reference to `mysql_init@4'
    .objs\project2_mysql\main.o:main.cpp:(.text+0xda): undefined reference to `mysql_real_connect@32'
    .objs\project2_mysql\main.o:main.cpp:(.text+0xe2): undefined reference to `mysql_get_client_info@0'
    .objs\project2_mysql\main.o:main.cpp:(.text+0x100): undefined reference to `mysql_get_server_info@4'
    .objs\project2_mysql\main.o:main.cpp:(.text+0x121): undefined reference to `mysql_close@4'
    collect2.exe: error: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 1 seconds)
    5 errors, 0 warnings (0 minutes, 1 seconds)

    0
  • #4 17 Paź 2013 19:33
    Akane
    Poziom 27  

    Szanowny autorze. Zanim odpowiedziałem, utworzyłem projekt w C:B z Twoim kodem z zestawem GCC 4.7.2 x86, w opcjach projektu dodałem dwa katalogi:
    C:\Program Files (x86)\MySQL\MySQL Server 5.6\lib
    C:\Program Files (x86)\MySQL\MySQL Server 5.6\include
    oraz potrzebną bibliotekę libmysql.a, która była kopią pliku libmysql.lib. Skompilowało się bez problemu. Jedyne co zmieniłem w kodzie, to zastąpienie ostrymi nawiasami cudzysłowia w include.

    Autorowi zalecam zmianę czcionek na wysoki kontrast, lub monitora na większy, bo chyba nie zauważył, że ciągle linkuje błędne pliki *lib, które przerywają proces budowania końcowej binarki (exe).

    0