使用mysql ++构建应用程序时找不到mysql_version.h

时间:2013-08-15 21:28:59

标签: c++ mysql mysql++

我想用Linux中的mysql ++库(包装器)用c ++连接我的MySQL数据库(ubuntu 12.04)。我通过xampp for linux安装了mysql,但也尝试使用sudo apt-get istall mysql-server。我用sudo apt-get install libmysqlclient15-dev获得了mysql ++ lib。

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 - /usr/include/mysql文件复制到/usr/include/mysql++

编辑:

  • 我的文件系统中有两个mysql ++ dirs:/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 个答案:

答案 0 :(得分: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> - No such file or directory

答案 1 :(得分:0)

如果您构建自己的软件包,从系统中卸载所有相关的dev软件包(mysql ++)可能会有所帮助。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

使用-DMYSQLPP_MYSQL_HEADERS_BURIED标志进行编译,或直接包含mysql目录。即尝试以下之一:

g++ test.cpp -o test -DMYSQLPP_MYSQL_HEADERS_BURIED

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

这两个对我有用。

更多信息可在this bug report中找到。