1. 程式人生 > >vs中如何配置連線mysql資料庫

vs中如何配置連線mysql資料庫

vs連線資料庫其實就是將mysql資料庫.h標頭檔案介面、lib連結檔案和dll執行檔案加入到專案中。下面是配置如何加入。

轉於http://www.cnblogs.com/justinzhang/archive/2011/09/23/2185963.html

一、VS2013工程設定工作

首先,建立一個windows應用程式的工程,將C/C++->前處理器->前處理器定義下的_WINDOWS改為_CONSOLE,

image

將聯結器->系統->子系統 選擇為控制檯。

image

由於我們要使用Mysql的API,並且我們機子上肯定安裝了Mysql資料庫,所以我們要將工程的標頭檔案路徑指向Mysql安裝目錄的同文件mysql.h所在的位置,將連線庫路徑指向libmysql.lib所在的路徑,

在我的機子上,Mysql 的安裝路徑為:C:\Program Files\MySQL\MySQL Server 5.1

image

image

我們需要把VS2008的工程中的標頭檔案路徑和連線庫路徑指向上面的兩個地方:

將x專案屬性頁的C/C++->常規->附加包含目錄指向:C:\Program Files\MySQL\MySQL Server 5.1\include

image

將專案屬性頁的連結器->常規->附加庫目錄指向:C:\Program Files\MySQL\MySQL Server 5.1\lib\opt.

image

將連結器->輸入->附加依賴項中新增libmysql.lib。

image


如果不設定連結器->輸入->附加依賴項中新增libmysql.lib,那麼會出現如下的錯誤:

1>------ 已啟動全部重新生成: 專案: MySql-Connect, 配置: Debug Win32 ------ 
1>正在刪除專案“MySql-Connect”(配置“Debug|Win32”)的中間檔案和輸出檔案 
1>正在編譯... 
1>MySql_Connect.cpp 
1>x:\程式設計練習\c-c++\c\mysql_connect.cpp(35) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 參見“scanf”的宣告 
1>x:\程式設計練習\c-c++\c\mysql_connect.cpp(72) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : 參見“sprintf”的宣告 
1>x:\程式設計練習\c-c++\c\mysql_connect.cpp(86) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 
1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : 參見“sprintf”的宣告 
1>正在編譯資源清單... 
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1 
1>Copyright (C) Microsoft Corporation. All rights reserved. 
1>正在連結... 
1>LINK : 沒有找到 d:\我的文件\Visual Studio 2008\Projects\MySql-Connect\Debug\MySql-Connect.exe 或上一個增量連結沒有生成它;正在執行完全連結 
1>MySql_Connect.obj : error LNK2019: 無法解析的外部符號

[email protected],該符號在函式 _main 中被引用 
1>MySql_Connect.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用 
1>MySql_Connect.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用 
1>MySql_Connect.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用 
1>MySql_Connect.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用 
1>MySql_Connect.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用 
1>MySql_Connect.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用 
1>MySql_Connect.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用 
1>MySql_Connect.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用 
1>MySql_Connect.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用 
1>d:\我的文件\Visual Studio 2008\Projects\MySql-Connect\Debug\MySql-Connect.exe : fatal error LNK1120: 10 個無法解析的外部命令 
1>生成日誌儲存在“file://d:\我的文件\Visual Studio 2008\Projects\MySql-Connect\MySql-Connect\Debug\BuildLog.htm” 
1>MySql-Connect - 11 個錯誤,3 個警告 
========== 全部重新生成: 成功 0 個,失敗 1 個,跳過 0 個 ==========


如果到這裡你還沒成功,繼續看下面的解析:

之前經過配置,成功的在vs2013中成功的用c語言連線上的MySQL資料庫,但是最近連線MySQL資料庫,無論怎麼配置,老是出錯。

程式碼如下:

?
1 <ol class="dp-cpp"><li class="alt">#include <windows.h>  #include <stdio.h>  </li><li class="alt">#include <string.h> #include <mysql.h> </li><li class="alt"> #pragma comment (lib, "libmysql.lib") </li><li class="alt">#pragma comment (lib, "mysqlclient.lib")  </li><li class="alt">int main()  { </li><li class="alt">    char szTargetDSN[] = "test";     char szSqlText[500]=""; </li><li class="alt">    MYSQL * myData;     myData = mysql_init((MYSQL*)0); </li><li class="alt">         //連線資料庫  </li><li class="alt">    if(mysql_real_connect( myData, NULL, "root", "123456", szTargetDSN, MYSQL_PORT, NULL, 0))     { </li><li class="alt">        printf("資料庫連線成功!/n");         //構造SQL語句 </li><li class="alt">        sprintf(szSqlText,  "create table mytable" "(time datetime, s1 char(6), " "s2 char(11), s3 int, s4 int)");          if (mysql_query( myData, szSqlText)) </li><li class="alt">        {//執行SQL語句出錯              printf( "Can't create table"); </li><li class="alt">            mysql_close( myData );             return FALSE; </li><li class="alt">        }         printf("表建立成功/n"); </li><li class="alt">        mysql_close(myData);     } </li><li class="alt">         return TRUE; </li><li class="alt">} </li></ol>

錯誤如下:

error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用

error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用

error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用

error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 _main 中被引用

採用了以下的辦法:

點選

1.專案->屬性->vc++目錄。 
然後在"包含目錄"中新增"E:/Program Files/MySQL/MySQL Server 5.5/include" 
“庫目錄”中新增"E:/Program Files/MySQL/MySQL Server 5.5/lib"和"E:/Program Files/MySQL/MySQL Server 5.5/lib/Debug"。

2.專案->屬性->連結器->輸入->附加依賴項中新增libmysql.lib

但是編譯依舊還是同樣的問題。

於是開始思考,

lib是編譯時需要的,dll是執行時需要的。

如果要完成原始碼的編譯,有lib就夠了。

如果也使動態連線的程式執行起來,有dll就夠了。

在開發和除錯階段,當然最好都有。

一般的動態庫程式有lib檔案和dll檔案。lib檔案是必須在編譯期就連線到應用程式中的,而dll檔案是執行期才會被呼叫的。如果有dll檔案,那麼對應的lib檔案一般是一些索引資訊,具體的實現在dll檔案中。如果只有lib檔案,那麼這個lib檔案是靜態編譯出來的,索引和實現都在其中。靜態編譯的lib檔案有好處:給使用者安裝時就不需要再掛動態庫了。但也有缺點,就是導致應用程式比較大,而且失去了動態庫的靈活性,在版本升級時,同時要釋出新的應用程式才行。

1.編譯是通過靜態連結庫(lib)去找到介面的。

2.#pragma comment (lib, "libmysql.lib")

#pragma comment (lib, "mysqlclient.lib")

但是這兩句程式碼並沒有報錯,證明這兩個連結庫也正常加入了啊。怎麼還是出現“無法解析的外部符號”,很納悶。

百思不得其解,踏遍百度谷歌必應。還是木有辦法,或許就是那麼靈光一閃,我擦。突然想起一個問題了。哥哥我裝的是win7 64位啊,MySQL也是赤裸裸的64位,丫的,我用WIN32 專案搞毛線。於是有一個猜想就是,MySQL 64位的lib也是64位的介面。

於是用了兩部去證明這個想法,

.專案->屬性->配置管理器

活動解決方案平臺,下拉選新建,出現一個新的對號框,在鍵入選擇新平臺中選擇X64

最後重新編譯,這次完全證明的我想法是對的。編譯成功。哦也!

最後分析一下解決這個問題關鍵,其實這個問題很簡單。搞明白dll和lib的作用,或許都能分析出這個問題了原因了。

寫到這,再去搜索果不其然

http://www.linuxso.com/sql/19105.html

再一次說明,遇到問題要善於思考。

本文出自 “小橋流水的技術部落格” 部落格,請務必保留此出處http://idear.blog.51cto.com/4097017/871174

最後,也可以直接將.h檔案和dll檔案加到你的工程目錄裡。

另外,若這些都完成了程式顯示你的計算機中缺少libmysql.dll請重新安裝,這是隻需要把libmysql.dll檔案拷貝到當前專案的debug目錄下即可。

相關推薦

VS 引用連線mysql資料庫失敗 報錯:">LINK : fatal error LNK1104: 無法開啟檔案“libmysql.lib”

出現此類問題時,首先需要檢查一下專案配置檔案: 專案檔案——》右鍵屬性 (1)檢查VC++目錄配置配置均完成! (2)檢查連結器——》輸入配置方法如下:     若檢查以上錯誤均完成了,錯誤報錯原因就是不是配置專案的原因,開啟專案路徑檢查路徑下是否有如下兩個檔案“libmys

vs如何配置連線mysql資料庫

vs連線資料庫其實就是將mysql資料庫.h標頭檔案介面、lib連結檔案和dll執行檔案加入到專案中。下面是配置如何加入。 轉於http://www.cnblogs.com/justinzhang/archive/2011/09/23/2185963.html 一、

MyEcplisejava連線MySQL資料庫的java.lang.NoClassDefFoundError: org/aspectj/lang/Signature問題

我用的是ecplise3.2+myecplise5.1.1+Tomcat 5.0+MySQL5.0+jdk1.5新建專案名為Test,然後在裡面新建了mysql.html和mysql.jsp功能是把mysql.html寫的東西傳到mysql.jsp中程式如下:(2.1)mysql.html <html

IntelliJ IDEA配置連線MySQL資料庫

如圖: 1、點選主介面右側邊欄Database 2、點選"+"號 3、點選Data Source 4、點選MySQL 如圖填寫資料庫名,使用者名稱和密碼,之後點選下方Test Connection測試 連線成功會顯示上圖字樣 這時發現已經可以檢視到資料庫資訊,說明

Eclipsehibernate連線mySQL資料庫練習

下面開始搭建hibernate資料庫:1.在eclipse中新建Java project專案,名稱為:hibernateTest。右擊專案名稱,點選property,選擇Java Build Path,加入需要匯入的JAR包。2.在src資料夾下,新建hibernate.cfg.xml配置檔案,(連線資料庫的

Xadmin安裝配置+連線MySql資料庫

現有環境:Anaconda3(python3.6)Django2.0.2原始碼方式安裝xadmin1、  下載原始碼包2、  使用如下命令安裝pip install E:\python\softwork\xadmin-django2.zip安裝位置為G:\Anaconda3\

eclipsejava連線mysql資料庫

java連線mysql資料庫的基本操作 由於本人不會在CSDN中新增圖片 所以  一下解釋的圖片放在了相簿中; 在專案中匯入jar的方法截圖如下: 選擇addExternal然後根據提示匯入jar

python3在pycharm配置django連線mysql資料庫

原因:由於python3中沒有MysqlDB驅動,所以是連不上mysql資料庫的,在python3環境中可以使用pymysql解決辦法:1.pip install pymysql2.在django專案的

Spring整合Hibernate連線MySQL資料庫配置

Spring配置檔案applicationContext.xml中加入資料庫連線配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DT

連線mysql資料庫連線報錯,是pom檔案配置mysql連線驅動版本號問題

前一段時間安裝了最新的mysql 8.0.11,然後啟動一個專案的時候報錯資訊如下: [ERROR] 2018-08-14 17:28:21,246 method:com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:6

mac下的用idea配置jsp+tomcat連線mysql資料庫的環境

第一步 這裡假設IDEA和tomcat都以配置完成,僅差連線資料庫。 去這裡下載連線Mysql所需要的驅動程式mysql-connector-java-5.1.47-bin.jar。 第二步 下載完成後解壓獲取 並把它放在和tomcat伺服器的lib同一個資料夾下

【TCL】使用TCL連線Mysql資料庫之編譯mysqltcl(TCL安裝在CentOS 7)

最近在用tcl,想著連線mysql,從網上查了一下發現用mysqltcl比較好,不過需要自己編譯,使用過程遇上一些問題,因此就總結了一下。首先是先編譯mysqltcl。說明一下,我的tcl是通過yum install tcl命令直接安裝的,因此不同安裝方式tcl路徑可能有變化,例如如果是通過rpm安

ThinkPHP學習(三)配置PHP5支援MySQL連線MySQL資料庫

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

jmeter連線mysql資料庫配置

用jmeter連線mysql資料庫,在配置的過程中遇到了幾個坑,跟大家分享一下,避免人人踩坑~~ 關於驅動包:大部分時候是需要下載與伺服器的mysql相同版本的jar包~~ 關於驅動包路徑:不是所有的版本都選預設的com.mysql.jdbc.driver的,例如我的8.0.13版本,路徑為com.mys

Centos 7.2 安裝Apache、PHP、Mysql連線Mysql資料庫的包、安裝VSFTP、並配置

一、安裝Apache、PHP、Mysql、連線Mysql資料庫的包: yum install httpd yum -y install php yum -y install php-fpm yum -y install php-mysql yum -y inst

在java程式使用JDBC連線mysql資料庫

  在java程式中我們時常會用到資料庫中的資料或操作資料庫中的資料,如果java程式沒有和我們得資料庫連線,就不能實現在java程式中直接操作資料庫。使用jdbc就能將java程式和資料庫連起來,此時我們就能在java程式裡通過java程式碼完成我們要對資料庫的操作。但是使用jdbc怎麼實現連線呢? 具體

Windows的Linux子系統執行python3 連線mysql資料庫時報錯Access denied for user 'root'@'localhost'

** 我是通過更換root密碼的認證方式解決的,新版mysql使用的caching_sha2_password,換成mysql_native_password我就可以連上了。 步驟是在windows系統中的Linux子系統編輯器的命令列連線mysql, 通過my

Hibernate在MyEclipse的部署,連線MySQL資料庫

如今,更多的人使用MyEclipse而不再使用eclipse,MyEclipse比eclipse的方便之處我就不說了,但MyEclipse不是免費的,我也是使用破解版的。 在MyEclipse中如何搭建hibernate環境呢?今天學習一點點想與

#菜鳥新手EclipseJavaEE&MySQL&Tomcat#關於一個Eclipse登陸介面通過連線MySQL資料庫進行驗證的小體驗(感謝qq群友引燃的解答讓我解決這個小問題)

原始碼: package com.atguigu.javaweb; import java.io.IOException; import java.io.PrintWriter; import java.sql.DriverManager; import j

Myeclipse通過JDBC連線MySQL資料庫的詳細步驟

首先要說明的是,使用jdbc連線資料庫並不難,只要你按照接下來的步湊一步一步的做,理清思路,相信你肯定能夠成功。 一、準備工作 下載JDBC驅動。 網上有許多驅動可供下載,但魚龍混雜,可能部分讀者不知