3

Linux (ubuntu 12.04) で mysql++ ライブラリ (ラッパー) を使用して、C++ を使用して MySQL データベースに接続したいと考えています。Linux用のxamppを介してmysqlをインストールしましたが、sudo apt-get istall mysql-server. でmysql++ libを取得しましたsudo apt-get install libmysqlclient15-dev

include ステートメントinclude <mysql++/mysql++.h>は警告を発しませんでしたが、アプリケーションをビルドしようとすると、次のコンパイル エラーが発生します。

In file included from /usr/include/mysql++/connection.h:38:0, from /usr/include/mysql++/mysql++.h:56, from /home/bert/Documents/QtProjecten/FGBG/modules/server/mysqldb.h:6, from /home/bert/Documents/QtProjecten/FGBG/modules/server/mysqldb.cpp:1: /usr/include/mysql++/common.h:131:28: fatal error: mysql_version.h: No such file or directory compilation terminated.

実際mysql_version.h/usr/include/mysql++ディレクトリにはありません。これが何を意味するのか、誰にも分かりますか?この問題に関するドキュメントをほとんど見つけることができず、mysql_version.h-file を から/usr/include/mysqlにコピーしようとさえしました/usr/include/mysql++

編集:

  • 私のファイルシステムには 2 つの mysql++ ディレクトリがあります:/usr/local/include/mysql++/usr/include/mysql++. これは問題になる可能性がありますか?
  • に変更#include <mysql++/mysql++.h>しましたが</usr/include/mysql++/mysql++.h>、動作しませんでした。
  • Cmakelist で GXX フラグ (-DMYSQLPP_MYSQL_HEADERS_BURIEDまたは) を変更すると、名前空間-I/usr/include/mysqlが認識されなくなります。mysqlpp

これが私のヘッダーファイルのコードです:

#ifndef MYSQLDB_H
#define MYSQLDB_H

#include <mysql++/mysql++.h>

class MySQLDB{

public:
MySQLDB();
~MySQLDB();
bool open(std::string dbname, std::string hostname, std::string username, std::string password);
mysqlpp::StoreQueryResult query(std::string sql);
bool close();

private:
mysqlpp::Connection conn;
};
#endif
4

4 に答える 4

3

以下を使用して mysqlpp 名前空間をリンクできるかどうかを確認します。

dpkg -L libmysql++-dev

はいの場合、つまり libmysqlpp.a がある場合は、次のように-lmysqlppを使用してリンクします。

 g++ sm_cpp.cpp -o test -I/usr/include/mysql++ -I/usr/include/mysql -lmysqlpp

それが動作します。リンカは、ライブラリのディレクトリの標準リストを検索します。これは、実際には liblibrary.a という名前のファイルです。リンカーは、このファイルを名前で正確に指定されているかのように使用します。include <mysql++.h>- そのようなファイルやディレクトリはありません

于 2015-04-24T15:53:18.343 に答える
1

mysql_version.h は、mysqlpp パッケージではなく、mysql パッケージの一部です。/usr/include/mysql または usr/local/include/mysql [mysql dev ファイルをどこにインストールしたかによって異なります] を IDE にインクルードするだけです。簡単な解決策 (:

于 2014-03-03T19:32:18.217 に答える
1

フラグを指定してコンパイルする-DMYSQLPP_MYSQL_HEADERS_BURIEDか、mysql ディレクトリを直接含めます。つまり、次のいずれかを試してください。

g++ test.cpp -o test -DMYSQLPP_MYSQL_HEADERS_BURIED

g++ test.cpp -o test -I/usr/include/mysql/

これらは両方とも私にとってはうまくいきました。

詳細については、このバグ レポートを参照してください。

于 2015-01-10T23:13:59.607 に答える
0

独自のパッケージを構築する場合は、関連するすべての開発パッケージをシステム (mysql++) からアンインストールすると役立つ場合があります。

于 2013-08-15T21:39:25.487 に答える