[c++] Linkowanie biblioteki

0

witam,
wpadłem na pomysł napisania programu wykorzystującego baze mySQL...poszperałem po necie, znalazłem parę gotowych API do tego jednak doweidziałem się również ze serwer mysql dostarcza sam gotowe biblioteki (krasnal -> libmysql.lib)... taki oto kod znalazlem na necie

#include <stdio.h>
#include <iostream>
#include <winsock.h>
#include <windows.h>
#include "include/mysql.h"

int main() {
    MYSQL mysql;
    if(mysql_init(&mysql)==NULL) {
        printf("\nBlad inicjalizacji\n");
    } else {
        printf("\nWyglada ze jest ok ;)\n");
    }
    mysql_close(&mysql); 
    return 0;
}

jedynie co mi zostało do zrobienia to zalinkowanie biblioteki, jednak program na "sucho" generuje ten sam błąd linkera co po dodaniu biblioteki (projects ->projects options ->parameters -> Linker ->add library)

czy jest to moim błędem (linkowanie pierwszy raz w życiu robie) czy jest jeszcze coś co muszę zrobić aby to działała?
wtajemniczonych proszę o jakieś podpowiedzi,
dziękuje z góry

0

Co znaczy na sucho? Wklej blad. Zwykle wystarcza, ale wiecej znajdziesz w dokumentacji danej biblioteki (np. opcje prekompilatora).

0

bez linkowania bilioteki(na "sucho" :P ):

  [Linker error] undefined reference to `mysql_init@4' 
  [Linker error] undefined reference to `mysql_close@4' 
  ld returned 1 exit status 
 C:\C++\Makefile.win [Build Error]  [Project1.dll] Error 1 

po zalinkowaniu biblitoteki:

  [Linker error] undefined reference to `mysql_init@4' 
  [Linker error] undefined reference to `mysql_close@4' 
  ld returned 1 exit status 
 C:\C++\Makefile.win [Build Error]  [Project1.dll] Error 1 

teraz jak o tym mysle to moze nie ta biblioteka jest problemem, ale linkujac zlib.lib(rowniez od krasnala) mam to samo a po zalinkowaniu mysqlclient.lib dostaje multum bledow typu:

1302 C:\build\mysql-3.2 variable '_iob' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details. 

gdzie lezy wiec pies com go pogrzebał ?

mam identyczny problem jak opisany w tym wątku: http://www.cplusplus.com/forum/general/6370/ i chodź rozwiązanie i metoda jest podana przez użytkowników to w moim przypadku jest ona nieskuteczna -_-

0

Najpierw piszesz, ze po linkowaniu masz blad linkera, pozniej, ze cos z autoimportem. To jak to jest teraz? Co to za srodowisko?

0

blad mam tak czy siak... czy zalinkuje czy nie... wszedzie na necie gdzie widze zastosowanie mysql.h potrzebuje zalinkowac biblioteke libmysql.lib (.dll'ka jest w windowsie i ma byc na zapas w folderze z projektem)... gdy linkuje inna biblioteke albo to nie ma plywu albo dostaje te bledy z auto-importem ergo tej biblioteki mam nie linkowac bo ona jest zapewno jakos uzyta przez libmysql.lib...

johny_bravo napisał(a)

Najpierw piszesz, ze po linkowaniu masz blad linkera, pozniej, ze cos z autoimportem. To jak to jest teraz? Co to za srodowisko?

sa 3 biblioteki .lib, linkowanie 2 z nich nie naprawia bledu linkera, natomiast linkowanie 3 wywoluje te bledy z autoimprtem...
chce po prostu zeby ten projekt sie skompilowal, linkujac, nie linkujac jest mi to obojetne, chce nawiazac polaczenie z serwerem mysql.... pomysly ?

0

Z tego co widzę, próbujesz linkować biblioteki dla VC lub BCB w projekcie, który kompilujesz zestawem GCC, stąd te problemy. Znajdź odpowiednią wersję bibliotek pod GCC albo zmień kompilator.

0

ech kompiluje w devie wiec to pewno stad te problemy... sproboje w borlandzie i wtedy sie jeszcze odezwe w razie W, dzieki

0

dodalem w borlandzie libmySQL.lib do projektu i lapie taki blad:

[Linker Error] 'C:\MYSQL\LIBY\LIBMYSQL.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

na internecie znalazlem ze trzeba ta biblioteke .lib programikiem implib.exe z borlanda "przekonwerterowac" w .dll ...jednak .dll juz mam byla w krasnalu w tym samym folderze co ta .lib... dodanie libmySQL.dll jednak niczego nie zmiena, powyzszy blad i tak jest generowany,
help

0

na internecie znalazlem ze trzeba ta biblioteke .lib programikiem implib.exe z borlanda "przekonwerterowac" w .dll

Nie tyle przekonwertować, co wygenerować nową na bazie DLL-ki. Biblioteka LIB, którą teraz posiadasz, jest dla VC, więc narzędziami borlanda niewiele zdziałasz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1