Visual Studio 2012 C++ Mysql LNK2019 error

3287 ワード

最近Socketのプログラミングを学んで、1つのクライアントをしてユーザー名のパスワードを入力してログインを提出したいと思って、サーバーの端はデータベースに接続してユーザーの情報を検証して、だからMysqlをダウンロードしました.
ダウンロードは簡単です.直接公式サイトに行きます.
配置も難しくないようです.通常、ファイルをどこにコピーする必要はありません.上図に説明しましょう.
1.mysqlを追加します.h
プロジェクトの右クリックでpropertiesを選択
C/C++をダブルクリックしてGeneralを選択し、Additional Include Directoriesを表示
編集
フォルダのボタンをクリック
クリック...ツールバーの
中に入って自分でmysqlをインストールする場所を選択mysql server 5.5include、例えば私はデフォルトでC:Program filesmysqlにインストールして、私のパスは
そしてOK、最初のステップは完成して、この工事は自動的にこの経路の下のヘッダファイルを検出して、つまり直接#includeを書くことができます
毎回手動でこれらのことをしたくない場合は、このパスの下のすべてのファイルを直接Visual studioの下のVCパスの下のincludeフォルダに保存することができます.これはデフォルトの検出パスです.例えば、私のC:Program Files(x 86)Microsoft Visual Studio 11.0VCinclude
2.libmysqlを追加します.lib
linkerの下のGeneralに行くと、Additional Library Directoriesが表示されます.同じ方法ですが、今回は別のフォルダlibを追加し、libフォルダはincludeフォルダと同じフォルダmysql server 5.5にあります.もちろん、バージョン番号は人によって異なるかもしれません.
追加が完了したら左のlinkerの下のinputをクリックします
手動でlibmysqlを追加します.lib; セミコロンをつける
実はこのステップにも簡単な方法があり、もっと良いかもしれません.
直接libmysql.libこのファイルはsolution explorerが編集している工事の下に引っ張って、図のように
そしてプログラムにpragma comment(lib,「libmysql」)を加える.
ネット上で大部分の教程を见てここまで言うとなくて、正常に运行することができると言っています..実は違うかもしれません.のテストコードを書いた後、コンパイルに以下のエラーが発生しましたが、実はコードの問題ではありません.
インターネットでerror LNK 2019を検索すると、多くの結果が得られた.しかし、私の問題を解決できなかったようです.の
通常、必要なヘッダファイルを追加してlibに接続して、プログラムは正常にコンパイルするべきですが、ここではだめです...何時間も振り回して、最後にシステムが64ビットで、インストールしたmysqlも64ビットだったことを思い出したが、書いたプログラムはwin 32、つまり32ビットのプラットフォームの下でコンパイルされた.もちろん間違います.の図:
Platform win 32を見ましたか?
隣のコンフィギュレーションマネージャを選択し、
ここ
newを選択して表示
ARMというドロップダウンをクリックすると、
X 64を選択してOKし、再コンパイルすればエラーはありません.
運転すると、また間違えて、libmysqlが少なくなったと言いました.dll.このファイルはmysqlmysql server 5.5libにあります.コピー先
C:UsersUndeadDocumentsVisual Studio 2012ProjectsTestx 64Debug(この経路はあなたの工事所在経路ですx 64Debug)私はわざわざTestという工事を建ててこのブログを書きました.
体力活動.ここまで来れば問題ないはずです.簡単なテストプログラムをもう一つ書きましょう.
#include "stdafx.h"
#include 			//      mysql.h    ,  mysql   socket  
#pragma comment(lib,"wsock32")
#include 
#pragma comment(lib,"libmysql")
#include 
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{

	MYSQL myCon;
	MYSQL_ROW sql_row;
	MYSQL_FIELD *fd;
	MYSQL_RES * result = NULL;
	char column[32][32];
	int res;
  	mysql_init(&myCon);

	if(mysql_real_connect(&myCon,"localhost","db_user","db_password","db_name",3306,NULL,0)){    //db_user,db_password,db_name        ,user        root
		cout << "Connect successful" << endl;						     //db_name          ,        test   
		res = mysql_query(&myCon,"select * from table_name");	//              table,   table_name   ,   ;       query fail				
		if (!res)
			{
			result = mysql_store_result(&myCon);
			if(result)
            {
                int i,j;
                cout<name);
                }
                j=mysql_num_fields(result);
                for(i=0;i

体力活動.体力活動.みんなに役に立つかどうか分かりません.の