【C++,MySQL,64bitOS】MySQLをC++のプログラム使用したところ、エラーが出てしまい困っています。解決策があれば教えてください。状況詳細を下記に記載します。

使用言語:C++,使用OS:Windows7 64bit,IDE:VisualC++2010Express,MySQL:Windows 64bit版
依存のlib:OK
インクルードパス:OK
ライブラリパス:OK
#include <windows.h>
#include <mysql.h>
int main(int argc, char* argv[]) {
MYSQL * con;
con = mysql_init(NULL);
return 0;
}
error LNK2019: 未解決の外部シンボル _mysql_init@4 が関数 _main で参照されました。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/10/22 00:56:20
  • 終了:2011/10/23 09:03:19

ベストアンサー

id:cx20 No.1

cx20回答回数603ベストアンサー獲得回数1072011/10/22 10:05:16

WindowsXP32bitでは32bit用MySQLを利用し、その他同条件で実施すると正常に動きました。

64bit 版のプログラムには64bit版のライブラリが必要です。


以下に64bit 版のライブラリがあるようですので、こちらで試してみてください。

■ MySQL :: Download Connector/C

http://dev.mysql.com/downloads/connector/c/

Windows (x86, 64-bit), ZIP Archive

(mysql-connector-c-noinstall-6.0.2-winx64.zip)

他1件のコメントを見る
id:cx20

Express 版が手元に無い為、未確認ですが、既定では64bit版のコンパイルは出来ないようです。

■ 方法 : Visual C++ プロジェクトを 64 ビット プラットフォーム用に設定する

http://msdn.microsoft.com/ja-jp/library/9yb4317s(VS.80).aspx

既定では、Visual C++ Express Edition で 64 ビット ツールを使用することはできません。

Visual C++ Express Edition で 64 ビット ツールを使用可能にするには、

Visual C++ Express Edition の他に、.NET Framework SDK をインストールしてください。

手順については以下の記事が参考になるか思います。

■ Visual C++ 2010 Expressで64bitコンパイル - torutkの日記

http://d.hatena.ne.jp/torutk/20100927/p1

2011/10/22 20:00:37
id:kudolf

アドバイスありがとうございます。

Microsoft Windows SDK for Windows 7 ant .NET Framework4のインストールと、

VC++2010のプラットフォームの設定にx64を作成することによって今回の問題を解決することができました。現在ビルドを行ってもエラーが出力されません。

お陰様で助かりました、ありがとうございました!

2011/10/23 09:03:09
  • id:kudolf
    500Byteに収まらなかった情報をここに追記します。
    【いくつかの試み】
    ●libファイルのみライブラリディレクトリから削除
    LINK : fatal error LNK1104: ファイル 'libmysql.lib' を開くことができません。
    ●dllファイルのみライブラリディレクトリから削除
    error LNK2019: 未解決の外部シンボル _mysql_init@4 が関数 _main で参照されました。
    dllが読み込めていないか、dllの中身が対応していないのでしょうか?
    WindowsXP32bitでは32bit用MySQLを利用し、その他同条件で実施すると正常に動きました。
    宜しくお願い致します。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません