2010-03-25 45 views
5

我建立從源代碼的開源項目,如何使#include <mysql.h>工作?

,它需要包括<mysql.h>

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

和compilor報告:

mysql.h no such file or directory 

MySQL的是另一個更大開源項目,我需要做些什麼才能使它工作?

+1

'#include「mysql.h」'工作嗎?在'< >'和'「」'之間加入了一些差異(取決於文件是否與正在編譯的代碼位於相同的目錄中,或者其他地方 - 這對我來說已經有一段時間了,我忘了細節,查找它) 。另外,什麼是您的MySQL源代碼的路徑,並且該路徑是您構建路徑的一部分? – FrustratedWithFormsDesigner 2010-03-25 14:16:04

+1

版本?操作系統?編譯器?環境? – 2010-03-25 14:24:50

+0

Windows,使用eclipse cdt – symfony 2010-03-25 14:25:53

回答

1

您是否嘗試給include語句指定文件的完整路徑?

+0

當你必須改變你的開發環境時,你會怎麼做? – 2010-03-25 14:22:14

+1

@klez:使用文件*的完整路徑進行測試*作爲測試有效,以查看它是否有效。當然,它不應該這樣... – FrustratedWithFormsDesigner 2010-03-25 14:32:02

+0

@FrustratedWithFormsDesigner是的,這就是我的意思:-) – 2010-03-25 14:35:30

6

這將完全依賴於您的構建方法,無論是使用Visual Studio,Eclipse等IDE,還是使用* nix中的shell腳本和命令行。

您需要確保該文件(mysql.h)存在於'includes'路徑中。

例如,在Visual Studio中,你會進入:

項目屬性 - >配置屬性 - > C/C++ - >常規 - >附加包含目錄

,幷包括目錄到你有'mysql.h'保存。

然後,你的連接性能,重複上述步驟,包括相應的DLL/LIB文件在附加庫目錄路徑

這將有很大的不同取決於你的環境中,將需要精確的步驟,以便了解更多信息逐步驟。但是這應該解釋實際的問題。

+0

我既沒有'mysql.h'也沒有'mysql.lib',我應該在哪裏下載它? – symfony 2010-03-25 14:24:06

+8

@symfony:EPIC FAIL XD你如何期待包含一個你沒有的文件? – 2010-03-25 14:25:32

+1

試試這個:http://www.google.com/search?q=download+mysql+source – FrustratedWithFormsDesigner 2010-03-25 14:25:59

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

這兩種語法形式都會導致指定包含文件的全部內容替換該指令。兩種形式之間的區別在於預處理器在未完整指定路徑時搜索頭文件的順序。

#include "path-spec"指示預處理器在包含#include語句的文件的同一目錄中查找包含文件,然後在包含(#include)該文件的任何文件的目錄中查找包含文件。預處理器然後沿着由/ I編譯器選項指定的路徑搜索,然後沿着由INCLUDE環境變量指定的路徑搜索。

#include <path-spec>指示預處理器首先沿着/ I編譯器選項指定的路徑搜索包含文件,然後在從命令行編譯時沿着由INCLUDE環境變量指定的路徑搜索。

我不知道你用的是什麼編譯器,但它可能需要添加您的包括和庫的編譯:

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

實際上,它與-I選項無關 - 除非您使用GCC。說它要求編譯器查找標題,而不是使用相對於正在編譯的當前文件的相對路徑會更準確。所以,-1表示不完全正確,但+1表示獲取OP需要的信息的要點。 – 2010-03-25 14:27:05

6

對於我來說,在Ubuntu 12.04,我需要用這個包括

#include <mysql/mysql.h> 
+0

它爲我工作。謝謝MRK ... – Hakim 2013-01-27 20:26:10

0

g ++ -o程序名$(mysql_config --cflags)程序文件。cpp $(mysql_config --libs)

Linux中的竅門。