為 DEV-C++ 產生 libmysql.a 的過程 及 windows下 devc++ c語言訪問mysql資料庫 環境配置

來源:互聯網
上載者:User
本文內容包括兩部分:一。 為 DEV-C++ 產生 libmysql.a 的過程二。windows下 devc++ c語言訪問mysql資料庫 環境配置一。為 DEV-C++ 產生 libmysql.a 的過程目的:因為DEV-C++ 使用的編譯器是gcc, 而 MySQL內建的libmysql.dll 只支援Visual Stdio。為此,需要從libmysql.dll 產生libmysql.a。使用的命令是:Dlltool  --input-def   libmySQL.def  --dllname  libmySQL.dll  --output-lib libmySQL.a -k為使上一命令正確執行,需要注意以下幾點:(1)       dlltoll.exe  存在於 DEV-C++ 目錄下(C:\Program Files\DEV-CPP\mingw32\bin);而 libmySQL.def 和 libmySQL.dll 存在於 MySQL目錄下。首先需要把libmySQL.def 和 libmySQL.dll 拷貝到dlltoll.exe 所在的目錄。而不是相反,把dlltoll.exe 拷貝 到MySQL目錄下libmySQL.dll所在的目錄。這是 因為libmySQL.dll  的全路徑上,有 “MySQL server 5.1”,中間有空格,這會影響 dlltool 命令的執行,產生錯誤資訊 考慮到 dlltoll.exe 存在於 C:\Program Files\DEV-CPP\mingw32\bin中,因此可以把 libmySQL.dll 拷貝到此目錄“…….installation problem Cannot exec ‘as’”(2) 上一命令中的libmySQL.def 不是,MySQL安裝後即存在的那個檔案。而是必須使用下面的命令,基於libmysql.lib 產生。   Reimp  -d   libmysql.lib (似乎reimp 並不包含在DEV-C的安裝包中,需要另外下載)可以通過比較新產生的 libmySQL.def  和 在另一目錄下的 MySQL 內建的同名檔案的大小,發現兩者是不同的。若錯誤地使用MySQL 內建的libmySQL.def檔案,執行dlltool命令時會出現一系列類似下面的錯誤資訊。undefined reference to `mysql_real_query@12'   Reimp包含在 mingw-utils中,因此需要下載  mingw-utils。註:如果在DEV-C中的 Project ---Project Option --- Parameters Linker 中不指定 libmySQL.a 的全路徑,也會出現類似undefined reference to `mysql_init@4' 這樣的錯誤。(3) 產生libmySQL.a 後,還需要在DEV-C++的 ‘Project Option’ | Compiler Options | Linker Sheet 在linker 一欄添上libmySQL.a 的全路徑(含檔案名稱)。二.  windows下 devc++ c語言訪問mysql資料庫 環境配置參考了以下兩篇文章(1) http://hi.baidu.com/leeyou1450/blog/item/78fdd438ec9986f63a87ceaa.html(2) http://hi.baidu.com/leeyou1450/blog/item/ede27dd8f488bdec39012fa9.html但是雖然自己也是用的 DEV-C 4.9.9.2版,WindowsXP系統,按照這兩篇文章的指示設定卻不成功,對其進行了一些改進。具體情況如下。a) 要想在程式中使用mysql資料庫,需要在  Project |‘Project Option’ | Compiler Options | Linker Sheet 在linker 一欄添上libmySQL.a 的全路徑b) 想在程式中使用多線程,需要在 Project | Project Option’ | Compiler Options | Linker Sheet 在linker 一欄添上   C:\Program Files\DEV-CPP\Lib\libws2_32.a (據網上文章說 同目錄下的檔案 libwsock32.a 是舊版,因此應用libws2_32.a)c) 有網文推薦 在 Project |‘Project Option’ | Compiler Options |的 Copliler 和 C++ Compiler 框中添加    -Wall 和-Wd) 在 Project |‘Project Option’ | Directories | Include Directories 下添加   C:\Program Files\MySQL\mysql-5.1.38-win32\include  這樣在 xxx.cpp檔案中才可以包含 #include "mysql.h"。    奇怪的是,在 Tools---Compiler Options---Directories --- C Includes 或 C++ Includes中包含     C:\Program Files\MySQL\mysql-5.1.38-win32\include   不起作用e) Tools---Compiler Options---Directories---Libraries 下添加    C:\Program Files\MySQL\mysql-5.1.38-win32\lib\opt可以用下面的代碼測試DEV-C的環境設定是否正確#include <cstdlib>#include <iostream>using namespace std;#include <windows.h>#include "mysql.h"#include <stdio.h>#include <stdlib.h>#include <winsock.h>/*int main(){  WSADATA wsadata;  WSAStartup(0x101, (LPWSADATA)& wsadata);  system("PAUSE");  return 0;}*/int main(){       MYSQL mysql;      //mysql串連       MYSQL_RES *res; //這個結構代表返回行的一個查詢結果集       MYSQL_ROW row; //一個行資料的型別安全(type-safe)的表示       char *query; //查詢語句       int t,r;       mysql_init(&mysql);       if (!mysql_real_connect(&mysql,"localhost", "root", "", "mysql",3306,NULL,0))       {          printf( "Error connecting to database%s\n",mysql_error(&mysql));       } else          printf("Connected...\n");       query="SET CHARACTER SET GBK"; //設定編碼       t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));       if(t)       {            printf("編碼設定失敗\n");       }       query=" select * from user ";       t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));       if(t)       {           printf("執行查詢時出現異常: %s",mysql_error(&mysql));       }else           printf("[%s] 構建成功 \n",query);       res=mysql_store_result(&mysql);       while(row=mysql_fetch_row(res))       {                                      for(t=0;t <mysql_num_fields(res);t++)            {                printf("%s:   ",row[t]);            }            printf("\n");       }       mysql_free_result(res);       //sleep(1);       scanf("%d",&t);       return 0;}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.