0

ねえ、SQL で絶え間ない問​​題が発生しました。業界の重要な部分であることを知っているので、経験を積もうとしています。C# で動作するようになりましたが、現在は C++ でデータベースに接続する作業を行っています。私はプロジェクトを適切にリンクしていますが、そうではありません。これが私のコードと私が得ているエラーです。

 #include "stdafx.h"
 #include <mysql.h>
 #include <iostream>
 MYSQL mysql;
 MYSQL_RES result;


using namespace std;
 int _tmain(int argc, _TCHAR* argv[])
 {

    mysql_init(&mysql);

if(!mysql_real_connect(&mysql, "localhost", "root", "*******", "MyDatabse", 0,       NULL, 0))
{
    printf("Failed to connect");
}


return 0;

    }

そしてエラー:

Error   1   error LNK2001: unresolved external symbol _mysql_real_connect@32    c:\Users\Zack-074\documents\visual studio 2010\Projects\MySql\MySql\MySql.obj
Error   2   error LNK2001: unresolved external symbol _mysql_init@4 c:\Users\Zack-074\documents\visual studio 2010\Projects\MySql\MySql\MySql.obj
Error   3   error LNK1120: 2 unresolved externals   c:\users\zack-074\documents\visual studio 2010\Projects\MySql\Debug\MySql.exe   1

本当に助かります。

4

2 に答える 2

1

これらはリンカー エラーです。つまり、オブジェクト ファイルへのコンパイルには問題がないように見えますが、それらのオブジェクト ファイルを実行可能ファイルにリンクしようとすると問題が発生します。

すぐに頭に浮かぶ解決策の 1 つは、リンク先のライブラリの場所や名前を手動で指定することです。VS2010 で、作業中のプロジェクトを右クリックし、[プロパティ] を選択します。そこから、リンカー オプションを開き、リンクするライブラリのディレクトリを指定します。

于 2012-04-13T17:33:15.313 に答える
0

VS コマンド プロンプト (または任意のプロンプトと実行vsvars32.bat) を開き、次のようにコンパイラを使用します。

cl /nologo /W4 /EHsc /MD my.cpp /ID:\Opt\MySQL5.5\include ^
   /link /LIBPATH:D:\Opt\MySQL5.5\lib libmysql.lib

^ 文字は、行を継続するためのものです (ここでの表示を改善するため)。重要なのは、インクルード ディレクトリをコンパイラに、MySQL の場合は lib ディレクトリをリンカに伝え、libmysql.libリンクするファイルとして指定することです。これにより、実行時に DLL をロードするコードが EXE に配置されます。

dir my*
13.04.2012  19:53               342 my.cpp
13.04.2012  19:53             6.144 my.exe
13.04.2012  19:53             9.762 my.obj

なしで行くようにコードを適応させましたstdafx.h:

#include <windows.h>
#include <tchar.h>
#include <mysql.h>
#include <iostream>
using namespace std;

MYSQL mysql;
MYSQL_RES result;

int _tmain(int argc, _TCHAR* argv[]) {
    mysql_init(&mysql);
    if(!mysql_real_connect(&mysql, "localhost", "root", "***", "test", 0, NULL, 0))
    {
        printf("Failed to connect");
    }
    return 0;
}
于 2012-04-13T18:02:53.127 に答える