http://16hot.blog.isyi.com/post/1/144
在網上搜尋到一些資料,按照上面提示的方法。
已經解決了問題。
因為我使用的是Dev-C++開發工具。他使用的是gcc編譯器。
而MySQL提供的Windows For C串連庫不支援gcc 、 CygWin 、MinGW等。
因此在編譯串連的時候,就會出現錯誤提示。
解決方案:
1 、安裝好MySQL (如果不願意安裝,那找個libmySQL.dll檔案也可以)
2、下載Pexports工具
3、轉換操作: pexports libmySQL.dll > libmySQL.def
4、使用Cygwin的 dlltool轉換成為libmysql.a檔案。dlltool --input-def libmySQL.def --dllname libmySQL.dll --output-lib libmysql.a -k
5、嘗試是否成功: gcc -o mysqldemo mysqldemo.o <path to libmysql.a>
如果再出現象mysql_connect@xx (xx是數字)的錯誤提示。就執行第6步。
6、修改libmysql.def檔案,給mysql_connect加上@xx,即: mysql_connect@xx
7、重做第4步
8、然後嘗試第5步,如果還是出現錯誤提示。就作第6步。一直到沒有錯誤為止。
7 Comments on "解決Windows下C串連MySQl的問題"
- 作者 16hot 你是如何編譯的呢? [ 回複 ]
04/11/2005, 23:51
你是如何編譯的呢?
- 作者 16hot 操作步驟 [ 回複 ]
05/11/2005, 17:32
第一步:指定mysql.h等包含檔案的路徑
在Dev-C++裡,開啟項目,Alt+P 開啟項目屬性。
在“檔案/目錄” -> “包含檔案目錄”添加你存放mysql標頭檔的路徑。
第二步:產生libmySQL.a檔案
參考我上面的文章,必須將libmySQL.dll轉換成為libmySQL.a ,編譯器才能認。
因為mysql內建的libmySQL.dll是給微軟的VC++使用的。:(
我也因為這個問題,搞了N久。
第三步:指定libmySQL.a的路徑
同樣是在項目屬性裡。在“參數”頁,有個“連接器”框。在下面有“加入庫或者對象”,點擊開啟,到你存放libmySQL.a檔案的目錄,選擇它。
然後“確定”退出屬性視窗,再編譯。
這時候會出現一些函數提示如mysql_query@8 不存在等。需要參考上面文章,一步一步改,產生新的libmySQL.a檔案。
直到成功為止。
- 作者 lewbing [ 回複 ]
11/05/2006, 22:31
16hot兄:真的非常感謝,為了這一丁點東西,我找這方面的資料找了好久呢。由於討厭使用盜版軟體,在可能的情況下,我都使用Free Software完全代替了盜版軟體。因此我也用DEV-CPP完全代替了Visual C++,不過DEV-CPP使用資料真的奇缺,協助文檔也不夠詳細。免費軟體嘛,哪能做那麼周到,不過在此還是真得謝謝你了。
我想在過些時把一些常用的、國內資料少的開發軟體使用方法、技巧寫一些文章,希望到時候我們可以交流一下,我留下Gmail郵箱,請你時間時請給我Mail吧,到時候我們在交流一下啊!!!
Email:lewbing@gmail.com
- 作者 kenny 關於 libmysql.a問題 [ 回複 ]
09/07/2007, 18:16
您好
我找了網路上好多文章~終於看到這篇
於是我試著你的方法~產生了 libmysql.a
但是我link的時候還是會發生錯誤...
[Linker error] undefined reference to `mysql_init@4'
[Linker error] undefined reference to `mysql_real_connect@32'
[Linker error] undefined reference to `mysql_query@8'
[Linker error] undefined reference to `mysql_close@4'
我的IDE是 DEV-C++ 4.9.9.2
MYSQL是 5.0.27
請問您有遇過這樣問題嗎?
- 作者 16hot 修改libmysql.def檔案 [ 回複 ]
12/07/2007, 21:43
修改libmysql.def檔案,把提示沒有的函數都加上,然後再從第4、5步。如果還有,就繼續重複,直到沒有提示為止。