天天看點

mingw環境添加mysql開發庫

  今天碰巧要用到mysql進行開發,在windows的mingw平台。

0.下載下傳mysql

  http://cdn.mysql.com/Downloads/MySQL-5.1/mysql-noinstall-5.1.73-win32.zip

  下載下傳這個綠色版的。然後解壓到D盤下,複制一份ini配置檔案,修改部分選項,并啟動服務,詳細看我以前的部落格

  http://www.cnblogs.com/wunaozai/p/3641589.html

1.開發安裝完了之後就進行開發,下面這個是一個示例程式

1 #include <stdio.h>
 2 #include <windows.h>
 3 #include <mysql.h>
 4 #include <winsock2.h>
 5 
 6 int main(int argc,char *argv[])
 7 {
 8     MYSQL conn;
 9     int res;
10     mysql_init(&conn);
11     if(mysql_real_connect(&conn,"localhost","root","","test",0,NULL,CLIENT_FOUND_ROWS)) //"root":資料庫管理者 "":root密碼 "test":資料庫的名字
12     {
13         printf("connect success!\n");
14         res=mysql_query(&conn,"insert into test values('user','123456')");
15         if(res)
16         {
17             printf("error\n");
18         }
19         else
20         {
21             printf("OK\n");
22         }
23         mysql_close(&conn);
24     }
25     return 0;
26 }      

  要把mysql安裝程式中的include複制到開發環境中。然後還有構造一個libmysql.a這種靜态連結庫。

  官方mysql的win發行版是由vc編譯,産生的lib無法被mingw連結。連結時會抛出未定義錯。

  具體的辦法如下 在include檔案夾中複制 libmysql.def 到 lib目錄,在lib目錄執行下面這句

  dlltool --input-def libmySQL.def --dllname libmySQL.dll --output-lib libmysql.a -k  (dlltool 工具是mingw自帶)

  此時會生成一個libmysql.a檔案。然後把這個檔案複制到開發環境中,就基本是可以了。

  我們弄好了這些後就編譯一下,

  g++ main.cpp -o main.exe -Iinclude -L. -lws2_32 -lmysql 

  居然會出現這種錯誤

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cc8HIzrA.o:main.cpp:(.text+0x68): undefined reference to `mysql_init@4'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cc8HIzrA.o:main.cpp:(.text+0xb1): undefined reference to `mysql_real_connect@32'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cc8HIzrA.o:main.cpp:(.text+0xdf): undefined reference to `mysql_query@8'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cc8HIzrA.o:main.cpp:(.text+0x11d): undefined reference to `mysql_close@4'
collect2.exe: error: ld returned 1 exit status
make: *** [main] Error 1      

  解決如下

  打開libmysql.def修改對應出錯的地方如

mingw環境添加mysql開發庫

  就像這樣,在後面手動增加數字,然後重複上面的操作,重新用dlltool生成一次libmysql.a連結庫

  到這裡就可以用了。

參考資料

http://www.cnblogs.com/cy163/archive/2009/10/03/1577812.html

作者:無腦仔的小明

出處:http://www.cnblogs.com/wunaozai/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。有需要溝通的,可以站内私信,文章留言,或者關注“無腦仔的小明”公衆号私信我。一定盡力回答。