3

我想用 c++ 和 linux(ubuntu 12.04)中的 mysql++ 库(包装器)连接到我的 MySQL 数据库。我通过 xampp for linux 安装了 mysql,但也尝试使用sudo apt-get istall mysql-server. 我得到了 mysql++ 库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++.

编辑:

  • 我的文件系统中有两个 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 的文件。然后,链接器使用这个文件,就好像它已经按名称精确指定了一样。包括<mysql++.h>- 没有这样的文件或目录

于 2015-04-24T15:53:18.343 回答
1

mysql_version.h 是 mysql 包的一部分,而不是 mysqlpp 包。只需将 /usr/include/mysql 或 usr/local/include/mysql [取决于您安装 mysql 开发文件的位置] 包含到您的 IDE 中。简单的解决方案(:

于 2014-03-03T19:32:18.217 回答
1

用flag编译-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 回答