2010-03-25 16 views
5

Buduję projektu open source ze źródła,Jak #include <mysql.h> pracę?

i muszą zawierać <mysql.h>:

#if USE_MYSQL 
#include <mysql.h> 
#endif 

i raporty compilor:

mysql.h no such file or directory 

MySQL to kolejna większa projekt open source, co muszę zrobić, aby działał?

+1

Czy "#include" mysql.h "' działa? Istnieją różnice między włączaniem między '< >' a '" "(w zależności od tego, czy plik znajduje się w tym samym katalogu co kompilowany kod, czy gdzie indziej - minęło trochę czasu, a ja zapominam o szczegółach, sprawdzam) . Jaka jest ścieżka do twojego źródła MySQL i czy ta ścieżka jest częścią twojej ścieżki budowania? – FrustratedWithFormsDesigner

+1

Wersje? System operacyjny? Kompilator? Środowisko? –

+0

Windows, używając eclipse cdt – symfony

Odpowiedz

1

Czy spróbować dać include pełną ścieżkę dostępu do pliku?

+0

i kiedy musisz zmienić środowisko programistyczne, co zrobisz? –

+1

@klez: testowanie z pełną ścieżką do pliku * jest * ważne jako test, aby sprawdzić, czy działa. Oczywiście nie powinno tak być ... – FrustratedWithFormsDesigner

+0

@FrustratedWithFormsDesigner Tak, to właśnie miałem na myśli :-) –

6

To będzie całkowicie zależne od swoich metod tworzenia, czy to za pomocą IDE jak Visual Studio, Eclipse, etc, lub jeśli używasz skryptów powłoki i linii poleceń w * nix.

Musisz upewnić się, że istnieje taki plik (mysql.h) zawiera w swoim „” ścieżki.

Na przykład w Visual Studio, to pójdzie do:

Projekt Właściwości -> Właściwości Konfiguracja -> C/C++ -> Ogólne -> Dodatkowe Include Directories

i zawierają katalog, do którego zapisano "mysql.h".

Następnie za swoimi właściwościami łącznikowych, powtórz kroki i zawierać odpowiednią DLL/lib ścieżkę pliku w dodatkowe katalogi biblioteki

To jest bardzo zróżnicowana w zależności od środowiska, więc więcej informacji byłyby potrzebne do dokładnego kroku -nie-kroki. Ale powinno to wyjaśnić rzeczywisty problem.

+0

Nie mam ani 'mysql.h' ani' mysql.lib', gdzie powinienem go pobrać? – symfony

+8

@symfony: EPIC FAIL XD Jak chcesz uwzględnić plik, którego nie masz? –

+1

Spróbuj tego: http://www.google.com/search?q=download+mysql+source – FrustratedWithFormsDesigner

1
#include "path-spec" 
#include <path-spec> 

Obie formy składni powodują zastąpienie tej dyrektywy przez całą zawartość określonego pliku włączającego. Różnica między tymi dwoma formularzami to kolejność, w której preprocesor wyszukuje pliki nagłówkowe, gdy ścieżka jest niekompletnie określona.

#include "path-spec" instruuje preprocesor szukać zawierać pliki w tym samym katalogu, w pliku zawierającym oświadczenie #include, a następnie w katalogach dowolnych plików, które obejmują (#include) pliku. Preprocesor następnie przeszukuje wzdłuż ścieżki określonej przez opcję kompilatora/I, a następnie wzdłuż ścieżek określonych przez zmienną OBEJMUJE środowiska.

#include <path-spec> instruuje preprocesor szukać zawierać pliki pierwszy na ścieżce określonej przez opcję kompilatora/I, a następnie, podczas kompilacji z wiersza poleceń, na ścieżce określonej przez zmienną środowiskową include.

nie wiem co kompilator używasz, ale może wymagać, aby dodać swój zawiera i libs do kompilacji:

g++ bla.cpp -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient_r 
+1

W rzeczywistości nie ma to nic wspólnego z opcją -I, chyba że używasz GCC. Bardziej poprawne byłoby powiedzenie, że kompilator szuka nagłówka, zamiast używać względnej ścieżki do kompilowanego pliku bieżącego. Tak więc -1 za brak poprawności, ale +1 za uzyskanie informacji potrzebnych PO. –

6

Dla mnie na Ubuntu 12.04, musiałem użyć tego m.in.

#include <mysql/mysql.h> 
+0

To zadziałało dla mnie. Dzięki MRK ... – Hakim

0

g ++ -o Nazwa programu $ (mysql_config --cflags) Plik programu.cpp $ (mysql_config --libs)

Czy podstęp w Linuksie.

Powiązane problemy